Welcome to Edopla, where your cravings become our mission! At Edopla, we take pride in
being more than just a food delivery platform; we are a community that connects local
vendors and customers, fostering a vibrant local economy.
Our platform serves as a bridge, linking local businesses directly to customers. By doing
so, we empower local vendors, offering them a larger share of the sale revenue compared to
our competitors. We believe in supporting the backbone of our communities, and Edopla is
dedicated to ensuring that local businesses thrive.
For our valued customers, Edopla goes beyond convenience; it's about affordability. We
charge a minimal service fee, allowing you to enjoy your favorite meals without breaking
the bank. Your satisfaction is at the heart of our mission, and we strive to make your
dining experience not only delicious but also accessible.
Join us on this journey as we revolutionize the way you discover and enjoy local flavors.
Order, pick up, and savor the taste of community with Edopla!
- This application can be accessed at: Edopla
- Suggested browser: Chrome or Firefox
- Suggested theme: Dark theme
- Docker
- Docker Compose
- .env files (provided on request)
- Clone the repository
- Navigate to the root directory of the repository
- Run
./edopla-script.shto execute the script - Enter
startto run the application - Enter the ENV and DEBUG arguments
- Open a browser and navigate to
localhost:3000
The frontend will be running on localhost:3000
The backend will be running on localhost:5000
Given the application is running:
- Navigate to the root directory of the repository
- Run
./edopla-script.shto execute the script - Enter
stopto stop the application
- Run the application (as described above)
- Enter the backend container by running
docker exec -it edopla-backend bash - Run
npm testto run all tests ornpm run {test filename}to run the tests in a specific file
Edopla is a MERN stack application, featuring a variety of technical components and features.
Material-UI IntegrationMaterial-UI components are used for a consistent and visually appealing design.AnimationReact Spring is included for animation effects in the UI.Intersection ObserverReact Intersection Observer is employed for handling elements visibility in the viewport.Protected RoutesReact Router is used for protected routes, ensuring that only authenticated users can access certain pages.Address AutocompleteGoogle Places API is used for address autocomplete, allowing users to easily enter their address.OAuth AuthenticationGoogle & GitHub OAuth can be used for authentication, allowing users to sign in with third-party accounts.
AuthenticationBcrypt is included for password hashingSession ManagementExpress Session is used for managing user sessions.MiddlewareCORS middleware is integrated, allowing cross-origin resource sharing.LoggingMorgan is be used for logging HTTP requests.
TypeScriptBoth frontend and backend are implemented using TypeScriptLintingESLint is configured for linting code, ensuring code quality.TestingJest and Supertest are set up for automated testing of backend APIs.
WebpackWebpack is configured for building the frontend application.ScriptingA bash script is included for running the application.
| Frontend Dependency | Version | Backend Dependency | Version |
|---|---|---|---|
| @emotion/react | ^11.11.1 | @types/bcrypt | ^5.0.0 |
| @emotion/styled | ^11.11.0 | @types/connect-mongo | ^3.1.3 |
| @mui/icons-material | ^5.15.0 | @types/cors | ^2.8.17 |
| @mui/joy | ^5.0.0-beta.18 | @types/express | ^4.17.17 |
| @mui/system | ^5.15.3 | @types/express-session | ^1.17.10 |
| @types/react | ^18.2.45 | @types/morgan | ^1.9.5 |
| @types/react-dom | ^18.2.18 | @types/supertest | ^2.0.16 |
| react | ^18.2.0 | @typescript-eslint/eslint-plugin | ^6.4.1 |
| react-dom | ^18.2.0 | @typescript-eslint/parser | ^6.4.1 |
| react-intersection-observer | ^9.5.3 | eslint | ^8.48.0 |
| react-router-dom | ^6.16.0 | jest | ^29.7.0 |
| react-scripts | 5.0.1 | nodemon | ^3.0.1 |
| react-spring | ^9.7.3 | ts-jest | ^29.1.1 |
| typescript | ^4.9.5 | typescript | ^5.2.2 |
| web-vitals | ^2.1.4 | bcrypt | ^5.1.1 |
| @react-google-maps/api | ^2.19.2 | connect-mongo | ^5.1.0 |
| @react-oauth/google | ^0.12.1 | cors | ^2.8.5 |
| express | ^4.18.2 | ||
| express-session | ^1.17.3 | ||
| mongoose | ^7.4.5 | ||
| morgan | ^1.10.0 |
backend/ - Contains the backend application code
-
@types/- Contains all the typescript definitions for the backend -
src/- Contains the source code for the backendcontrollers/- Contains callback functions code called by each routeerrors/- Contains custom error classesmiddleware/- Contains middleware functions that are called before each routemodels/- Contains code for all data modelsroutes/- Contains HTTP to URL path associations for each unique urltests/- Contains all the Jest unit test code for the backendutils/- Contains utility functions used throughout the backendapp.ts- Initializes the express backend applicationserver.ts- Initializes the server for the backend
-
.eslintrc.json- This is a configuration file for eslint linter -
Dockerfile- Commands for building a docker image for the backend -
jest.config.js- Configuration file for Jest testing framework -
package.json- Defines npm behaviors and packages for the backend -
tsconfig.json- Configuration settings for compiling TypeScript code in the backend
frontend/ - Contains the frontend application code
-
public/- Contains static files of the frontend -
src/- Contains the source code for the frontendcomponents/- Contains all the react components for the frontenderrors/- Contains custom error classes and error handling codeimages/- Contains all the images used in the frontendmodels/- Contains code for all data modelsnavigation/- Contains all the code for the navigation barnetwork/- Contains all the code for the network requests to the backendpages/- Contains all the code for the different pages of the frontendroutes/- Contains all the code for the different routes of the applicationstyles/- Contains all the styling files for the frontendutils/- Contains utility functions used throughout the frontendApp.tsx- Initializes the react frontend applicationindex.tsx- Renders the react app by rendering App.js
-
Dockerfile- Commands for building a docker image for the frontend -
package.json- Defines npm behaviors and packages for the frontend -
tsconfig.json- Configuration settings for compiling TypeScript code in the frontend -
webpack.config.ts- Configuration settings for webpack
docker-compose.yml - Defines configurations for the docker containers
edopla-script.sh - Script to either run or stop the docker containers
README.md - This file!
upcoming.md - Details the upcoming features and changes to be made
- Gmail: saad.bhatti.cs@gmail.com
- Phone: +1 (781) 692-9561
- GitHub
- Devloper's website
