Technology stack - 1deeppanwala/Trekora GitHub Wiki

1. Front-End (Web)

  • Svelte (47.9% of the codebase): A modern, lightweight framework for building reactive web UIs.
  • TypeScript (14.9%): A superset of JavaScript that adds static typing for better code reliability and maintainability.
  • HTML/CSS (4.3%): For web page structure and styling.

2. Front-End (Mobile App)

  • React Native: A popular framework for building cross-platform mobile applications (Android and iOS) with a shared codebase.
  • Version TBD: You can choose the latest stable version.
  • Expo: A development toolchain and platform that streamlines React Native development. It simplifies configuration, deployment, and testing for mobile apps.
  • Features: Push notifications, easy deployment, over-the-air updates.

3. Back-End Services

  • Python (31.3%): Used for building the server-side logic (likely with Django, based on the repository).
  • Django: A high-level Python framework that follows the model-template-views (MTV) architectural pattern for building secure and scalable web applications.
  • Node.js (optional): If you'd prefer to adopt a JavaScript-based backend.
  • Express.js: A lightweight web application framework for Node.js, perfect for building APIs.

4. Database

  • PostgreSQL (relational database): Used for handling structured data (user information, adventures, etc.). PostgreSQL is often the preferred choice for Django applications.
  • Managed via Docker for ease of deployment.
  • MongoDB (optional): A NoSQL database could be useful if your app requires scalability for unstructured data or complex relationships that aren’t easily handled by a relational database.
  • Firebase: Used for real-time database features and user authentication.
  • Firebase Authentication: For easy user authentication with email/password, Google, Facebook, etc.
  • Firebase Realtime Database or Firestore: Can store data like user sessions, notifications, and real-time updates.

5. Third-Party APIs

  • Skyscanner API: Used for flight booking services.
  • Provides data for flight searches, prices, and booking.
  • Google Maps API: For location-based features such as:
  • Map rendering.
  • Geolocation and geocoding.
  • Navigation and location tracking.

6. CI/CD & Automation Tools

  • GitHub Actions: For continuous integration and deployment.
  • Automate build, testing, and deployment workflows whenever code changes are pushed to GitHub.
  • Could integrate with services like Heroku, AWS, or DigitalOcean for deployment.
  • Docker: Used to containerize back-end services (API, database, etc.), ensuring consistent environments across development, staging, and production.
  • Helps streamline deployment and simplifies scaling the application.

7. Proxy & Nginx (Infrastructure)

  • Nginx: Used as a reverse proxy and load balancer to manage traffic between the frontend and backend containers, as well as potentially handling SSL termination.
  • Configured with Docker for easy setup in the development and production environments.

8. Version Control & Collaboration Tools

  • Git/GitHub: Used for version control and collaboration. The project is hosted on GitHub, and you can leverage GitHub Actions for automated processes.
  • Docker: Ensures that all team members can run the application in a consistent environment across different machines.