WriteTheDocs Kenya
# Write the Docs Kenya Website
A modern web platform for the Write the Docs Kenya community, featuring event highlights, blog posts, community resources, and more.
---
## Table of Contents
- Write the Docs Kenya Website
- Table of Contents
- Features
- Tech Stack
- Getting Started
- Prerequisites
- Setup
- Project Structure
- Development Scripts
- Contributing
- License
---
## Features
- π° Blog feed with live and sample posts
- π
Event highlights and previous conferences
- π₯ Community and partner sections
- βοΈ Contact and FAQ
- π§βπ» Modern, responsive UI with Tailwind CSS
- π Integration with Hashnode and Meetup APIs
---
## Tech Stack
- **Frontend:** React, TypeScript, Vite, Tailwind CSS, Radix UI, React Query
- **Backend:** Express (Node.js) β API proxy for Meetup/Hashnode/Cloudinary, Drizzle ORM + PostgreSQL for contact form submissions
- **Other:** Hashnode API, Meetup API, Cloudinary, Zod
---
## Getting Started
### Prerequisites
- Node.js (v18+ recommended)
- PostgreSQL (optional β only needed if you want contact form submissions to persist; the app runs fine without it)
---
### Setup
```bash
npm install
npm run dev
```
- This starts a single server (Express + Vite middleware) serving both the frontend and the `/api/*` routes.
- Defaults to `
localhost` (macOS reserves port 5000 for ControlCenter/AirPlay). Override with `PORT=xxxx npm run dev`.
- To enable live Meetup events, blog posts, or gallery images, create a `.env` file in the project root with `MEETUP_API_KEY`, `CLOUDINARY_CLOUD_NAME`, `CLOUDINARY_API_KEY`, and `CLOUDINARY_API_SECRET`. Without it, those sections gracefully fall back to sample content.
- To enable contact form persistence, also set `DATABASE_URL` (a Postgres/Neon connection string) and run `npm run db:push`.
For production:
```bash
npm run build # builds the frontend (dist/public) and bundles the server (dist/index.js)
npm start # runs the production server
```
---
## Project Structure
```
wtdkenya- β¦