A waitlist landing page for Fauna, a wildlife photography and conservation social platform.
Frontend
- React 19
- TypeScript
- Tailwind CSS v4
- Vite 5
Backend
- Node.js
- Express
- MongoDB with Mongoose
Deployment
- Railway (full-stack)
fauna-waitlist/
├── src/
│ ├── pages/
│ │ └── FaunaWaitlist.tsx
│ ├── App.tsx
│ ├── main.tsx
│ └── index.css
├── public/
│ ├── images/
│ └── favicon files
├── server.js
├── vite.config.ts
└── package.json
Prerequisites
- Node.js 20+
- MongoDB Atlas account
Setup
- Clone the repository
git clone https://github.com/YOUR_USERNAME/fauna-waitlist.git
cd fauna-waitlist- Install dependencies
npm install- Create
.envfile
MONGODB_URI=your_mongodb_connection_string
PORT=3001
- Run development servers
Frontend:
npm run devBackend (separate terminal):
npm run serverDeployed on Railway with automatic builds from the main branch.
Environment Variables
MONGODB_URI- MongoDB Atlas connection stringNODE_ENV- Set toproduction
Build Command
npm run railway:buildStart Command
NODE_ENV=production node server.js- Create MongoDB Atlas cluster (free tier M0)
- Add database user with read/write permissions
- Whitelist all IPs (0.0.0.0/0) in Network Access
- Copy connection string and add to Railway environment variables
- Email waitlist with duplicate prevention
- Wildlife photo gallery with lightbox
- Masonry grid layout
- Full mobile responsive design
- Custom cursor and subtle animations
All rights reserved.