-
Notifications
You must be signed in to change notification settings - Fork 4
Tech Stack
DevCamper is built using a modern and efficient tech stack that includes both frontend and backend technologies. These technologies work together to provide a responsive, secure, and scalable platform for users, publishers, and admins.
The frontend of the DevCamper application is built using the following technologies:
- React.js: A popular JavaScript library for building user interfaces, React.js allows us to create dynamic, reusable UI components for the DevCamper platform.
- Create React App (CRA): Provides the initial project structure and build tools for developing the React app without configuration.
- React Router: For seamless navigation and routing within the application, enabling multi-page support.
- Axios: For making HTTP requests to interact with the backend API.
- React Bootstrap: A popular front-end framework used in conjunction with React to build responsive, mobile-first pages and components with pre-built design elements.
- Responsive Design: The application is built with responsiveness in mind, ensuring compatibility across mobile, tablet, and desktop devices.
The backend of the DevCamper application handles all server-side logic, database interactions, and API management. The key technologies used are:
- Node.js: A runtime environment that allows us to use JavaScript for server-side programming.
- Express.js: A minimal and flexible web application framework for Node.js, used for building our RESTful API.
- MongoDB: A NoSQL database used to store bootcamps, users, reviews, and course information. It provides a flexible schema structure that is ideal for handling the dynamic content of DevCamper.
- Mongoose: An Object Data Modeling (ODM) library for MongoDB, Mongoose is used to create models and enforce schema validation in the database.
- MapQuest Geocoding API: This service converts addresses into geographic coordinates, which is used for location-based search functionality in the application.
Ensuring secure user sessions and data privacy is critical for DevCamper. We use the following tools and methods:
- JWT (JSON Web Tokens): JWT is used for user authentication and session management. Every user action, such as logging in, registering, or submitting a review, is securely authorized using these tokens.
- bcrypt.js: Used for hashing user passwords before storing them in the database.
- Helmet.js: Adds basic security headers to the Express.js app to enhance security.
- CORS (Cross-Origin Resource Sharing): Configured to manage secure interactions between the frontend (React) and backend (Node/Express) when they run on different domains.
For smooth deployment and continuous integration/continuous deployment (CI/CD) processes, we utilize:
- GitHub Actions: GitHub’s CI/CD tool is used to automate testing and deployment of the application.
- Azure App Service: We deploy the application using Azure App Service, a platform-as-a-service (PaaS) offering that simplifies deployment, scaling, and management of web applications.
- Docker: Containers are used to create consistent and reproducible environments, especially for development and deployment.
- Kubernetes (Future Consideration): For scaling and managing containerized applications, Kubernetes may be introduced as a future enhancement for more advanced infrastructure needs.
To improve efficiency during development, we rely on the following tools:
- ESLint & Prettier: ESLint helps in catching common JavaScript errors, while Prettier enforces consistent code formatting.
- Nodemon: A utility that automatically restarts the Node.js server when file changes are detected, making development faster and easier.
- Postman: Used for API testing and development, Postman helps ensure that the REST API functions as expected.
Some additional services used in the application include:
- File Uploads: We support image uploads for bootcamp profiles, and these files are stored locally or in a cloud storage solution (depending on the deployment environment).
- Email Notifications: Using an SMTP server, we send email notifications to users upon registration and for other critical alerts.
-
Logging: We use
morgan
to log HTTP requests andwinston
for application-level logging.
Note: The tech stack may evolve as the project progresses. Stay tuned for updates on any new technologies or tools added to the platform.