Skip to content

Tech Stack

Prasad Honrao edited this page Oct 22, 2024 · 4 revisions

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.

Frontend

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.

Backend

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.

Authentication & Security

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.

DevOps & Deployment

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.

Development & Tools

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.

Other Services

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