A modern, responsive waitlist landing page for JechSpace. This project leverages React for dynamic UI, Tailwind CSS for styling, and Framer Motion for smooth animations.
- Frontend Framework: React 19
- Build Tool: Vite
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Animations: Framer Motion
- Icons: Lucide React
- Routing: React Router DOM
- HTTP Client: Axios
- Form Validation: Custom validation utilities
JechSpace-frontend/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ ├── Hero.jsx
│ │ ├── Features.jsx
│ │ ├── Navbar.jsx
│ │ ├── Footer.jsx
│ │ └── WaitlistForm.jsx
│ ├── pages/
│ │ ├── HomePage.jsx
│ │ └── WaitlistPage.jsx
│ ├── services/
│ │ └── api.js # Backend integration
│ ├── hooks/
│ │ └── useWaitlist.js
│ ├── utils/
│ │ └── validation.js
│ ├── App.jsx
│ ├── main.jsx
│ └── index.css
├── package.json
└── tailwind.config.js
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository:
git clone <repository-url> cd JechSpace-waitlist-frontend
-
Install dependencies:
npm install
-
Create environment file:
cp .env.example .env
-
Update the
.env
file with your backend API URL:VITE_API_URL=http://localhost:8000/api
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production build locallynpm run lint
- Run ESLint
The frontend is designed to work with a Django backend. Update the API endpoints in src/services/api.js
to match your backend URLs:
POST /api/waitlist/
- Submit waitlist formGET /api/waitlist/check/?email=<email>
- Check if email existsGET /api/waitlist/stats/
- Get waitlist statistics (optional)
{
"success": true,
"data": {
"id": 1,
"email": "user@example.com",
"first_name": "John",
"last_name": "Doe"
},
"message": "Successfully joined the waitlist!"
}
npm run build
The build artifacts will be stored in the dist/
directory.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request
- Built with Vite
- UI components inspired by shadcn/ui
- Animations powered by Framer Motion
- Icons from Lucide