Full-stack web application for discovering and managing events in Málaga, Spain. Users can browse events by category, register, join events and manage their profile. Administrators can create, edit and delete events through the API.
Frontend:
- Next.js
- React
- CSS3 with custom design system
Backend:
- Node.js
- Express.js
- MongoDB Atlas
- Mongoose
- JWT Authentication
- Bcrypt for password encryption
- Browse all events with category filters and pagination
- User registration and login with JWT tokens
- Event detail page with attendee count and join/leave functionality
- User profile with avatar and password update
- Admin panel to create, edit and delete events
- Real event images from Málaga
- Responsive design, mobile first
- In-page notifications
malaga-events/
├── backend/ │ ├── Controllers/ │ ├── Models/ │ ├── middleware/ │ ├── router/ │ └── app.js └── frontend/ └── src/ ├── api/ ├── components/ └── pages/
Backend:
cd backend
npm install
npm run devServer runs on http://localhost:9000
Frontend:
cd frontend
npm install
npm run devApp runs on http://localhost:3000
Create a .env file inside the backend folder:
PORT=9000
DATABASE_URL=your_mongodb_atlas_url
TOKEN_SECRET=your_secret_key
Auth:
- POST
/auth/signup— Register a new user - POST
/auth/login— Login and receive JWT token
Events:
- GET
/events— Get all events (supports category filter and pagination) - GET
/events/:id— Get event by ID - POST
/events— Create a new event (admin only) - PATCH
/events/:id— Update event (admin only) - DELETE
/events/:id— Delete event (admin only) - POST
/events/:id/join— Join an event (requires token) - DELETE
/events/:id/leave— Leave an event (requires token)
User:
- GET
/user/profile— Get current user profile (requires token) - PATCH
/user/profile— Update profile avatar (requires token) - PATCH
/user/password— Update password (requires token)
Sergio Picon
- GitHub: @Piconazo
- Location: Malaga, Spain
MIT