A professional marketing website for Atote Labs, a startup studio based in Nairobi that builds the next generation of software products.
- Frontend: React 19, Vite, TailwindCSS V4, React Router
- Backend: Node.js, Express.js
- Database: PostgreSQL with Prisma ORM
- Styling: TailwindCSS V4 with custom theme support
- Responsive design with mobile-first approach
- Light/Dark theme toggle
- SEO optimized
- Accessible (WCAG 2.1 Level AA)
- Secure API with rate limiting
- Input validation and sanitization
- Professional minimalist design
- Node.js 18+
- PostgreSQL 14+
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd Atote-Labs- Install server dependencies:
cd server
NODE_ENV=development npm install- Install client dependencies:
cd ../client
NODE_ENV=development npm install --legacy-peer-deps- Set up environment variables:
cd ../server
cp .env.example .envEdit .env with your database credentials and configuration.
- Set up the database:
npm run prisma:generate
npm run prisma:migrate
npm run prisma:seed- Start the backend server:
cd server
npm run devThe server will run on http://localhost:5000
- Start the frontend development server:
cd client
npm run devThe client will run on http://localhost:5173
Atote-Labs/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── contexts/ # React contexts
│ │ ├── pages/ # Page components
│ │ ├── App.jsx # Main app component
│ │ └── main.jsx # Entry point
│ └── package.json
├── server/ # Express backend
│ ├── prisma/
│ │ ├── schema.prisma # Database schema
│ │ └── seed.js # Database seeding
│ ├── src/
│ │ ├── config/ # Configuration files
│ │ ├── controllers/ # Route controllers
│ │ ├── middleware/ # Express middleware
│ │ ├── routes/ # API routes
│ │ └── index.js # Server entry point
│ └── package.json
└── docs/ # Documentation
npm start- Start production servernpm run dev- Start development server with nodemonnpm run prisma:generate- Generate Prisma clientnpm run prisma:migrate- Run database migrationsnpm run prisma:seed- Seed the databasenpm run prisma:studio- Open Prisma Studio
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build
GET /api/ventures- Get all venturesGET /api/ventures/featured- Get featured venturesGET /api/ventures/:id- Get venture by IDGET /api/articles- Get all articles (paginated)GET /api/articles/:slug- Get article by slugPOST /api/contact- Submit contact form
- Helmet.js for secure HTTP headers
- CORS configuration
- Rate limiting on API endpoints
- Input validation and sanitization
- XSS protection
- CSRF protection
- SQL injection prevention via Prisma
ISC
Atote Labs Team