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.sh
to execute the script - Enter
start
to 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.sh
to execute the script - Enter
stop
to stop the application
- Run the application (as described above)
- Enter the backend container by running
docker exec -it edopla-backend bash
- Run
npm test
to 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 Integration
Material-UI components are used for a consistent and visually appealing design.Animation
React Spring is included for animation effects in the UI.Intersection Observer
React Intersection Observer is employed for handling elements visibility in the viewport.Protected Routes
React Router is used for protected routes, ensuring that only authenticated users can access certain pages.Address Autocomplete
Google Places API is used for address autocomplete, allowing users to easily enter their address.OAuth Authentication
Google & GitHub OAuth can be used for authentication, allowing users to sign in with third-party accounts.
Authentication
Bcrypt is included for password hashingSession Management
Express Session is used for managing user sessions.Middleware
CORS middleware is integrated, allowing cross-origin resource sharing.Logging
Morgan is be used for logging HTTP requests.
TypeScript
Both frontend and backend are implemented using TypeScriptLinting
ESLint is configured for linting code, ensuring code quality.Testing
Jest and Supertest are set up for automated testing of backend APIs.
Webpack
Webpack is configured for building the frontend application.Scripting
A 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: [email protected]
- Phone: +1 (781) 692-9561
- GitHub
- Devloper's website