Queue times application for the Efteling theme park. Built with React and Django.
A fan-made project, not affiliated with the Efteling.
- π’ Real-time queue times for all attractions
- β±οΈ Single rider wait times
- πͺ Attraction status (open, closed, maintenance)
- π Multi-language support
- π¨ Beautiful, theme-park inspired design
.
βββ frontend/ # React application
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ store/ # Redux store
β βββ ...
βββ backend/ # Django API
βββ efteltimes/ # Django project
βββ queues/ # Queue times app
cd frontend
npm install
npm run devThe frontend will be available at http://localhost:5173
cd backend
pipenv install
pipenv shell
python manage.py runserverThe API will be available at http://localhost:8000
GET /api/v1/queues/- Get all queue times{ "last_updated": "2024-04-15T21:00:00Z", "source": "tpw-api", "entities": { "attractions": [ { "name": "Python", "waitTime": 15, "singleRider": { "available": true, "waitTime": 5 }, "status": "open" } ] } }
VITE_API_URL=http://localhost:8000DEBUG=True
USE_DUMMY_DATA=True # Set to False for real API- Folder structure created:
/frontendand/backend - Vite + React frontend scaffolded
- Django backend scaffolded using Pipenv
- TailwindCSS and styled-components set up
- Redux Toolkit and React Router configured
- Django REST Framework and CORS configured
- File-based caching set up in Django
- Project folders organized (
components/,layouts/,pages/,store/, etc.)
- Build reusable UI components:
- Time display component
- Status indicator component
- Entity row component
- Additional UI components:
- Tag components for status/type
- Card components for attraction details
- Loading and error state components
- Create layout components:
- Page container with consistent spacing
- Header component with park status
- Responsive grid system
- Footer component
- Section container components
- HomePage component:
- Data fetching and state management
- Layout assembly
- UI component integration
- Responsive design
- Switch from Python wrapper to direct ThemeParks API usage
- Set up
/api/v1/queues/endpoint - Extract: name, status, wait times, area, type, translations
- Include
last_updatedtimestamp - Cache backend response for 60 seconds
- Connect frontend to live data using RTK Query
- Transform API data for frontend consumption
- Add opening hours endpoint and integration
- Handle timezone differences correctly
- Add loading and error handling
- Implement global state for queue data
- Smart status display based on park hours
- Add favicon and page title
- Add legal/fan disclaimer in the footer
- Optimize layout for mobile
- Deploy backend to VPS with Nginx
- Deploy frontend (same VPS or static host)
- Toggle and button components
- Add toggle for grouping by area
- Default: grouped on desktop, flat on mobile
- Favoriting functionality
- Search/filter functionality
- Dark mode support
- Winter theme
- Internationalization:
- English version
- Language switcher
- Automatic language detection
- German localization
- Additional pages:
- Attraction detail pages with history
- Settings page for preferences
- About page with project info
- Improved data visualization:
- Wait time trends
- Peak hours indication
- Historical data analysis
MIT License - See LICENSE file for details