Many community events struggle with limited visibility and reach, while potential attendees face difficulties discovering relevant local activities. Current solutions are fragmented across social media platforms, specialized websites, or physical bulletin boards, creating barriers to effective event discovery and management. Additionally, finding and booking suitable venues for events often involves a cumbersome process of researching, contacting, and negotiating with venue owners separately from the event planning process. UpNext addresses these challenges by providing a dedicated platform that integrates event creation, discovery, and venue booking in one cohesive ecosystem.
https://docs.google.com/document/d/1dr8se0HVpj_WIavnwsuFajgPJJW-922zLvdqvMdmyUI/edit?tab=t.0
https://docs.google.com/spreadsheets/d/1p8vujcTDqnsbsG0XPGc3VQEsrvbbUbXXhNcpMoxSQf0/edit?gid=0#gid=0
https://docs.google.com/document/d/1F_BbxWogCVSSup0Pme5d-XIZ0jbCg39yP4M3IWzPQBA/edit?tab=t.0
https://cs540group3.atlassian.net/jira/software/projects/SCRUM/boards/1
- Features
- Backend Architecture
- Setup Instructions
- API Documentation
- Connecting to Frontend
- Development Workflow
- Future Enhancements
- Peer Group Tasks
- User registration and authentication using JWT tokens
- Custom user model with different roles (regular users, event organizers, venue owners)
- User profiles with personal information
- Profile editing and management
- Complete event CRUD operations
- Event categories system
- Event visibility settings (public, private, invite-only)
- Advanced event filtering and search
- Event status management (draft, published, cancelled, completed)
- Event attendance system with registration and cancellation
- Commenting system for events
- Venue creation and management
- Venue categories and amenities
- Venue availability settings
- Venue reviews and ratings
- Venue booking system with pricing calculation
- Advanced venue search and filtering
- Ticket: Represents event tickets issued to attendees
- TicketVerification: Tracks ticket verification details
- Framework: Django REST Framework
- Database: PostgreSQL
- Authentication: JWT (JSON Web Tokens)
- Documentation: Swagger/OpenAPI
- CORS: django-cors-headers
- users: Custom user model, authentication, and profiles
- events: Event management, categories, attendance, and comments
- venues: Venue management, booking, availability, and reviews
- upnext: Core project configuration
User: Custom user model extending Django's AbstractUserUserProfile: Extended profile information for users
EventCategory: Categories for eventsEvent: Main event model with details, scheduling, etc.EventAttendee: Tracks users attending eventsEventComment: Comments on events
VenueCategory: Categories for venuesVenueAmenity: Amenities that venues can offerVenue: Main venue model with detailsVenueAvailability: Tracks venue availabilityVenueImage: Images for venuesVenueBooking: Tracks venue bookingsVenueReview: Reviews for venues
GET/api/v1/tickets/ - List all tickets (filtered by user permissions)GET/api/v1/tickets/{id}/ - Retrieve a ticketGET/api/v1/tickets/my_tickets/ - List tickets for the current userPOST/api/v1/tickets/generate_for_event/ - Generate a ticket for an eventPOST/api/v1/tickets/{id}/cancel/ - Cancel a ticketGET/api/v1/events/{id}/tickets/ - List tickets for a specific event
GET/api/v1/ticket-verifications/ - List all verifications (filtered by user permissions)POST/api/v1/ticket-verifications/ - Verify a ticket by ticket numberPOST/api/v1/ticket-verifications/verify_by_qr/ - Verify a ticket using QR code data
- Python 3.8+
- Important This is not compatible wth Python 3.13. For best performance, use Python 3.11
- PostgreSQL
- pip
- Node.js
-
Clone the repository:
git clone https://github.com/shoibolina/UpNext.git cd UpNext -
Create and activate a virtual environment:
- Important Note Ensure that Python 3.11 is being used
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate
-
Install the required packages in the backend:
pip install -r requirements.txt
-
Ensure PostreSQL is installed & create a database in your terminal
- Can be found here: https://www.postgresql.org/download/
- Run the following commands in a terminal to create a database:
psql -U your_username CREATE DATABASE your_DB_name; -
Configure the database based on the layout of
upnext/settings.py. Create a .env file if you do not have one already, and then set all 5 variables below to your database settings (i.e.)DATABASES = { 'default': { "ENGINE": "django.db.backends.postgresql", "NAME": config("DB_NAME"), # Replace with your database name "USER": config("DB_USER"), # Replace with your database user "PASSWORD": config("DB_PASSWORD"), # Replace with your database password "HOST": config("DB_HOST"), # To run locally, use localhost "PORT": config("DB_PORT"), # To run locally, use 5432 } } # -- Your .env file should have variables set like this: DB_NAME=database_name
-
Follow the instructions to setup email functionality for password reset here, then return to continue to the next step
-
Apply migrations:
python manage.py migrate
-
Create a superuser:
python manage.py createsuperuser
-
Initialize sample data:
python manage.py init_data- Run the development server to launch the backend:
python manage.py runserver- In a new terminal, navigate the the frontend folder and use the following command to launch the frontend:
npm startTo enable email functionality such as password reset, follow these steps to set up the Resend API:
- Visit the Resend API keys page: https://resend.com/api-keys
- Log in or sign up for a free account.
- Click “Create API Key”
- Give your key a meaningful name (e.g.,
UpNext DevorPassword Reset Key) - Select the access level:
- Full Access – recommended for most use cases
- Limited Access – for read-only or scoped usage (optional)
- After generating the key, copy it for use in your environment setup.
-
Open your project's
.envfile and add the following line:RESEND_API_KEY=re_your_actual_key_here
The app should now be usable locally.
You can access the Swagger documentation of the API at:
- Local: http://localhost:8000/swagger/
- Alternative: http://localhost:8000/redoc/
POST /api/token/- Obtain JWT token pairPOST /api/token/refresh/- Refresh JWT tokenPOST /api/register/- Register a new user
GET /api/v1/users/- List all usersGET /api/v1/users/me/- Get current userPUT /api/v1/users/update_me/- Update current user
GET /api/v1/events/- List all eventsPOST /api/v1/events/- Create an eventGET /api/v1/events/{id}/- Retrieve an eventPUT /api/v1/events/{id}/- Update an eventPOST /api/v1/events/{id}/attend/- Register for an eventPOST /api/v1/events/{id}/comment/- Comment on an event
GET /api/v1/venues/- List all venuesPOST /api/v1/venues/- Create a venueGET /api/v1/venues/{id}/- Retrieve a venuePOST /api/v1/venues/{id}/bookings/- Book a venuePOST /api/v1/venues/{id}/reviews/- Review a venue