A comprehensive full-stack application designed to help individuals and organizations efficiently plan, schedule, and manage events. This major update introduces a React frontend, a Node.js/Express backend, MongoDB for data storage, JWT authentication, and optional Docker deployment.
-
User Authentication
Register and log in with JWT-based authentication to secure API routes. -
Event Management
Create, edit, view, and delete events. Each event can include a date, description, and more. -
Responsive Interface
Built with React and Bootstrap for a modern, mobile-friendly UI. -
Protected API Endpoints
Authorization tokens (JWT) ensure only authenticated users can access or modify their own events. -
Docker Support (Optional)
Quickly deploy the backend, frontend, and MongoDB as separate services usingdocker-compose
.
-
Frontend
-
Backend
-
Authentication
- JWT (jsonwebtoken) for secure token handling
- bcrypt for password hashing
-
Deployment
- Docker and docker-compose (Optional)
-
Clone the Repository
git clone https://github.com/marwan-ahmed-23/Event-Planner-Assistant.git
-
Install Backend Dependencies
cd Event-Planner-Assistant/backend npm install
-
Install Frontend Dependencies
cd ../frontend npm install
-
Configure Environment Variables
- Create a
.env
file inbackend/
(or use another method) with variables like:DB_URI=mongodb://localhost:27017/event_planner JWT_SECRET=mysecretkey PORT=5000
- Adjust these values based on your environment (local or production).
- Create a
-
Start MongoDB
Ensure you have a MongoDB instance running locally on port27017
, or updateDB_URI
in your.env
. -
Run Backend
In thebackend
folder, start the server:npm run dev
By default, it listens on
http://localhost:5000
. -
Run Frontend
In another terminal, go to thefrontend
folder:npm start
The React app will run on
http://localhost:3000
. -
Open the App
- Visit
http://localhost:3000
in your browser. - Sign up or log in to create and manage events.
- Visit
- Build and Run with docker-compose
From the project root:docker-compose up --build
- Access the Services
- Frontend:
http://localhost:3000
- Backend API:
http://localhost:5000
- MongoDB container internally at
mongo:27017
(exposed if configured indocker-compose.yml
)
- Frontend:
Event-Planner-Assistant/
├── backend/
│ ├── src/
│ │ ├── app.js # Express server setup & main configuration
│ │ ├── routes/
│ │ │ ├── users.js # Routes for user signup/login
│ │ │ └── events.js # Routes for event CRUD operations
│ │ ├── controllers/
│ │ │ └── eventController.js # Business logic for event routes
│ │ ├── models/
│ │ │ ├── User.js # Mongoose schema/model for User
│ │ │ └── Event.js # Mongoose schema/model for Event
│ │ └── middleware/
│ │ └── auth.js # JWT auth middleware to protect routes
│ ├── package.json # Backend dependencies and npm scripts
│ └── Dockerfile (optional) # Docker setup for the backend
├── frontend/
│ ├── public/
│ │ └── index.html # Main HTML template for the React app
│ ├── src/
│ │ ├── components/
│ │ │ ├── EventList.jsx # Displays list of events
│ │ │ ├── EventForm.jsx # Form to create/edit an event
│ │ │ └── AuthForm.jsx # Signup & login forms
│ │ ├── services/
│ │ │ └── api.js # Axios instance & API calls with interceptors
│ │ ├── App.js # Main React component
│ │ └── index.js # Entry point for React application
│ ├── package.json # Frontend dependencies and npm scripts
│ └── Dockerfile (optional) # Docker setup for the frontend
├── docker-compose.yml (optional) # Defines multi-container setup (backend, frontend, DB)
├── README.md # Project documentation
└── LICENSE # License file
- Fork the repository.
- Create a new branch:
git checkout -b feature/my-feature
- Commit your changes:
git commit -m "Add a new feature"
- Push your branch:
git push origin feature/my-feature
- Open a Pull Request on GitHub.
We welcome improvements, bug fixes, and suggestions!
This project is licensed under the MIT License.
Feel free to modify and distribute as needed.
Enjoy planning your events with ease! For any questions, issues, or feature requests, please open an issue or submit a pull request.