GoVan is a mock van hosting and rental website designed as a personal project. It showcases camping and adventure vans, allowing users to browse, filter, and view detailed listings.
- 🏕️ For Renters: Explore available vans, filter listings, and view details.
- 👨🏢 For Hosts: Access a dashboard to manage listings, track income, and view analytics.
- 🔒 Authentication: Simulated login for now (Firebase authentication planned).
- 💽 Data Storage: Firestore powers data persistence.
- 🎡 Mock API: Uses MirageJS for local development and testing.
🌍 Live Demo: GoVan
✔ Van Listings – Browse and filter vans by type and price.
✔ Van Details – View comprehensive information about each van.
✔ Host Dashboard – Manage listed vans, track income, and view interactive charts.
✔ Authentication – Firebase authentication for secure login (upcoming).
✔ Dynamic Charts – Uses Chart.js for data visualization.
✔ Firestore Database – Persistent data storage.
✔ MirageJS Mocking – Retained for testing and local development.
✔ Mock Reviews – Integrated into the host dashboard view.
✔ Responsive Design – Fully optimized for various screen sizes.
- 🔄 Redux Implementation – Enhanced state management.
- 📍 Google Maps Integration – Display van pickup locations.
- 💬 Reviews & Ratings – User-generated reviews for hosts and vans.
- 🗓 Booking System – Availability calendar for rentals.
- 💳 Payment Processing – Enable real bookings.
Technology | Purpose |
---|---|
React | UI library for building components |
Vite | Fast build tool for React apps |
TypeScript | Static typing for better development experience |
MirageJS | Mock API for backend simulation |
Firebase (Firestore) | Database for van listings and authentication |
Tailwind CSS | Utility-first CSS framework |
React Router | Client-side navigation |
Chart.js | Data visualization for host dashboard |
Netlify | Hosting and deployment |
GoVan uses Firestore as its primary database while MirageJS is retained for testing.
Method | Endpoint | Description |
---|---|---|
GET | /api/vans |
Fetch all vans from Firestore |
GET | /api/vans/:id |
Fetch van details by ID from Firestore |
GET | /api/host/vans |
Fetch all vans owned by the logged-in host |
GET | /api/host/income |
Fetch income data for the host |
POST | /api/# |
Authenticate a user (mock) |
🚀 Firestore now powers data storage, but MirageJS remains available for local development and testing.
git clone https://github.com/YOUR_USERNAME/govan.git
cd govan
npm install
npm run dev
The app will be available at
http://localhost:5173
.
✔ Firebase Firestore integration for data storage
✔ Basic van browsing & filtering
✔ Host dashboard with earnings visualization
✔ Mock reviews integrated
✔ Netlify deployment
🔄 Redux for state management
📍 Google Maps integration to show van pickup locations
💬 Reviews & ratings for hosts and vans
🗓 Booking system with availability calendar
💳 Payment processing for real rentals
📚 src
┣ 📂 components # Reusable UI components
┃ ┣ 📂 charts # Data visualization components
┃ ┃ ┣ 📄 LineChart.tsx
┃ ┣ 📄 Alert.tsx # Global alert component
┃ ┣ 📄 Footer.tsx
┃ ┣ 📄 Header.tsx
┣ 📂 layouts # Page layout components
┃ ┣ 📄 Layout.tsx # Main layout
┃ ┣ 📄 HostLayout.tsx # Host dashboard layout
┣ 📂 lib # Utility functions, API calls
┃ ┣ 📂 api # Firestore & API interactions
┣ 📂 hooks # Custom hooks (e.g., Firebase, data fetching)
┣ 📂 auth # Authentication logic
┃ ┣ 📄 AuthRequired.tsx # Protects private routes
┣ 📂 pages # Page components
┃ ┣ 📂 HostDashboard # Host dashboard pages
┃ ┃ ┣ 📄 Dashboard.tsx
┃ ┃ ┣ 📄 HostVanDetail.tsx
┃ ┃ ┣ 📄 HostVanInfo.tsx
┃ ┃ ┣ 📄 HostVanPhotos.tsx
┃ ┃ ┣ 📄 HostVan#.tsx
┃ ┃ ┣ 📄 HostVans.tsx
┃ ┃ ┣ 📄 Income.tsx
┃ ┃ ┣ 📄 Reviews.tsx
┃ ┣ 📂 Vans # Van listing pages
┃ ┃ ┣ 📄 VanDetail.tsx
┃ ┃ ┣ 📄 Vans.tsx
┃ ┣ 📄 About.tsx
┃ ┣ 📄 Home.tsx
┃ ┣ 📄 Login.tsx
┃ ┣ 📄 NotFound.tsx
┣ 📂 types # TypeScript types
┃ ┣ 📄 types.ts
┣ 📄 index.css # Global styles
┣ 📄 index.tsx # App entry point
Contributions are welcome! Follow these steps to contribute:
- Fork the Repository
- Create a New Branch (
git checkout -b feature-name
) - Commit Your Changes (
git commit -m "Add feature"
) - Push to Your Branch (
git push origin feature-name
) - Open a Pull Request
For major changes, please open an issue first to discuss the proposed modifications.
This project is licensed under the GNU General Public License 3.0. See the LICENSE file for details.
💙 Built with love by Ryan Calacsan 🚐✨