PlugPoint is a peer-to-peer EV charger sharing platform that connects home charger hosts with EV drivers. Built with a modern tech stack and designed for a premium user experience.
- Map Discovery: Find home chargers across India on an interactive, dark-themed map.
- Dual Roles: Register as either an EV Driver or a Host.
- Host Dashboard: Homeowners can list their chargers and manage incoming booking requests (Accept/Reject).
- Booking Flow: Drivers can check charger details, host contact info, and request time slots.
- Azure Integration: Fully connected to Azure Cosmos DB for scalable data management.
- Frontend: Vite + React, React Router, Axios, Google Maps API.
- Backend: Node.js, Express, Mongoose.
- Database: Azure Cosmos DB (MongoDB API).
- Styling: Premium Vanilla CSS Design System.
The project is divided into two main folders: client and server.
- Node.js (v18+)
- A Google Maps API Key
- An Azure Cosmos DB (MongoDB API) instance
cd server
npm installCreate a .env file in the server/ directory:
PORT=5000
MONGO_URI=your_azure_cosmos_db_uri/plugpoint?ssl=true...
JWT_SECRET=your_secret_keyRun it:
npm startcd client
npm installCreate a .env file in the client/ directory:
VITE_GOOGLE_MAPS_API_KEY=your_google_maps_keyRun it:
npm run devThe backend is configured with a start script in package.json. Deploy the server folder to an Azure App Service and configure the MONGO_URI and PORT (5000) in the configuration settings.
The frontend includes a staticwebapp.config.json for seamless React routing. Deploy the client folder to Azure Static Web Apps; it will automatically build using Vite.
plugpoint/
├── client/ # React + Vite Frontend
│ ├── src/
│ │ ├── components/ # Shared components (Navbar, Map)
│ │ ├── pages/ # Core pages (Home, Login, Dashboard, etc.)
│ │ ├── services/ # API logic
│ │ └── context/ # Global State
│ └── staticwebapp.config.json
└── server/ # Node.js + Express Backend
├── config/ # Database config
├── models/ # Mongoose Schemas
├── controllers/ # API Logic
├── routes/ # API Routing
└── server.js # Entry Point