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.
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.