# ThrillWiki Initial Setup ## Project Overview ThrillWiki is a database website focused on rides and attractions in the amusement and theme park industries. The site features detailed statistics, photos, and user reviews for parks and rides worldwide. ## Technical Stack - Backend: Django 5.1.2 - Frontend: React + Material UI + Alpine.js + HTMX - Database: PostgreSQL - Authentication: django-allauth (with Discord and Google OAuth support) - Email: ForwardEmail.net SMTP ## Key Features - Full authentication system with social login support - Responsive design for desktop and mobile - Light/dark theme support - Rich media support for ride and park photos - User review system with average ratings - Inline editing for authenticated users - Page history tracking - Advanced search and filtering capabilities ## Project Structure ``` thrillwiki/ ├── accounts/ # User authentication and profiles ├── api/ # REST API endpoints ├── docs/ # Project documentation ├── frontend/ # React frontend application ├── media/ # User-uploaded content ├── parks/ # Park-related models and views ├── reviews/ # User reviews functionality ├── rides/ # Ride-related models and views ├── static/ # Static assets ├── templates/ # Django templates └── thrillwiki/ # Project settings and core configuration ``` ## Setup Instructions 1. Create and activate a virtual environment: ```bash python -m venv venv source venv/bin/activate ``` 2. Install dependencies: ```bash pip install -r requirements.txt ``` 3. Configure environment variables: - Copy ***REMOVED***.example to ***REMOVED*** - Update the variables with your specific values 4. Set up the database: ```bash python manage.py migrate ``` 5. Create a superuser: ```bash python manage.py createsuperuser ``` 6. Run the development server: ```bash python manage.py runserver ``` ## Next Steps - [ ] Implement user models and authentication views - [ ] Create park and ride models - [ ] Set up review system - [ ] Implement frontend components - [ ] Configure social authentication - [ ] Set up email verification - [ ] Implement search and filtering - [ ] Add media handling