
An awesome README for Eventio, our Final Project at Ironhack :D !
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
"eventio" is an event booking app that allows users to discover and book various events in the city they live and love, filtering per several criterias like proximity, type of event, number of attendees, etc. The app aims to provide a seamless user experience and facilitate event management for both organizers and attendees.
Its the final project (Project3) from Web Development-Full Time 2023. As you already can imagine, we have spent so many hours trying to create this amazing final project, which includes all technical requirements requested by the Student Portal.
- Develop a Full-stack application using the MERN stack (MongoDB, Express, React and Node.JS).
- Using MERN stack.
- To have a fully functional full-stack application.
- Using Agile methodologies and participating in Agile rituals, such as daily stand-ups.
So, in conclusion:
- Have a SPA frontend, built with React, consisting of multiple views and implementing all CRUD actions.
- Have a REST API backend built with ExpressJS, MongoDB and Mongoose, that our React app will communicate with. Have a REST API backend with routes that perform all CRUD actions for at least one model (excluding the user model).
- Have 3 database models or more. Having one model for users is the first step. The other two (or more) models should represent the main functionality of our app.
- Include sign-up, log-in and log-out functionality with encrypted passwords (or social login) and authorization (logged-in users can do additional things).
- Have two separate repos on GitHub. One repo is for frontend React application and the other is for our backend REST API.
- Have at least 2 commits per day that we worked on.
- Have a backend validation and centralized error handling in our REST API.
- Be deployed online, allowing anyone to access and use our app.
This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
This is an example of how to list things you need to use the software and how to install them.
- npm
npm install npm@latest -g
Below is an example of how you can instruct your audience on installing and setting up your app. This template doesn't rely on any external dependencies or services.
-
Get a free API Key at https://example.com
-
Clone the repo
git clone https://github.com/your_username_/Project-Name.git
-
Install NPM packages
npm install
-
Install YARN packages
yarn install
Model #01: Event
- Title
- Date
- Hour
- Location
- Event Description
- Max Capacity # of Attendees
- Total # of Attendees
- Image "URL"
- Buyers {type: Schema.Types.ObjectId...ref:"User"}
- is cancelled
- owner {type:Schema.Type.ObjectId...ref:"User"}
- Price
Model #02: User
- (_id)
- Created Events {type: Schema.Types.ObjectId...ref:"Events"}
- Username
- Password
- isAdmin
Model #03: Event_User_Quant
- idUser
- idEvent
- Quantity
Model #04: Images
- id_User
- Title
- image_URL
Route | Privacy | Renders |
---|---|---|
/ | public | HomePage |
/signup | public | SignupPage |
/login | public | LoginPage |
/about | public | ResumePage |
/profile | private (user) | UserProfilePage |
/logout | private (user) | UserProfilePage |
/event/:eventId | public (user) | UserProfilePage |
/user/:userId | private (user) | UserProfilePage |
/admin | private (user) | UserProfilePage |
/admin/event/create | private (user) | UserProfilePage |
/admin/:eventId/edit | private (user) | UserProfilePage |
... |
- Navbar
- OrderCard
- PrivateRoute
GET Routes
Method | Endpoint | Require | Response (200) | Action |
---|---|---|---|---|
GET | /events | Returns the last 10 events created. | ||
GET | /profile | Displays profile from user. | ||
GET | /events:eventID | Returns events with the data assigned to the event, with info like buyers, soldout etc. | ||
GET | /admin/event/:id | Returns the events of the admin by Id. | ||
GET | admin/events | Returns all the events created by that admin. |
Back Routes
Method | Endpoint | Require | Response (200) | Action |
---|---|---|---|---|
POST | auth/signup | const { username, email, password } = req.body | json({user: user}) | Registers the user in the database and returns the logged in user. |
POST | auth/login | const { email, password } = req.body | Logs in a user already registered. | |
POST | auth/logout | Logs user out registered. | ||
POST | verify | Verifies that the user trying to log in is already registered and has a valid account, or that its not registered. | ||
POST | user/:eventId unnatend | Shows all the events filtered by filters to that particular user. | ||
POST | user/:eventId/cancel | Cancel the attendance of the user in that event. | ||
POST | user/events/create | User creates an event. | ||
POST | /admin/events/:eventsId/edit | Allows admin to edit or modify the event filtered by filters and ID. | ||
POST | user/events/:eventId/confirm | Shows the events that the user will attend and has confirmed assistance. | ||
POST | events/:eventId/confirm | Shows the events that have attendancy and have been confirmed. | ||
POST | api/upload | Route to upload images to Cloudinary. |
- Create Readme.md
- Create Project Repo
- Create MongoDB Database
- Create both Front and Back Routes
- Create and setup Models
- Event
- User
- Add design
See the full Height Control we used for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated, but please bear in mind that this Project is the result of 2 intensive full time months and there's plenty of margin to improve. So we would appreciate constructive feedback only.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the Ironhack License. All copyrights and intelectual property belong to the owners of the present Project. The owners may user their legal rights to defend the project at any time.
Pedro Torres - @kitschest_ - [email protected]
Toni Torredemer - [email protected]
Xavier Trallero @XTG1724 - [email protected]
Project Link: https://github.com/tonitoar/event.io-GENERAL-
We could have not succeeded without the help of our teachers Mariona Roca and Yabel Rodriguez. Thank you for all your work!