Year-round umbrella platform for Uganda's space ecosystem and World Space Week coordination
# Space Uganda
Space Uganda is the year-round umbrella website for Uganda's space ecosystem, with World Space Week Uganda 2026 as a featured national campaign.
The site is designed for a coalition of space educators, astronomy communities, universities, student branches, aerospace builders, legal and policy partners, companies, volunteers, and public outreach teams working under the shared domain `space.org.ug`.
## What Is Included
- Public website for Space Uganda as the year-round umbrella organisation.
- Dedicated World Space Week Uganda 2026 route at `/wsw-2026`.
- Community directory for organisations under the umbrella.
- Team page for coordinators and organising teams.
- Gallery section ready for future event photos and videos.
- Public `/join` intake form for community, partner, innovation, and contact submissions.
- Authenticated admin portal at `/admin`.
- Real Prisma database schema with Postgres.
- Seed data based on the WSW Uganda planning folder and current ecosystem map.
## Main Routes
- `/` - Space Uganda home.
- `/community` - ecosystem directory.
- `/team` - public team profiles.
- `/gallery` - gallery archive.
- `/wsw-2026` - World Space Week Uganda 2026 campaign page.
- `/join` - public submission form.
- `/admin` - authenticated admin dashboard.
## Admin Resources
The admin side dynamically manages:
- Communities
- Team
- Partners
- Campaigns
- WSW programme items
- Events
- Gallery items
- Announcements
- Submissions
- Site settings
## Tech Stack
- Next.js App Router
- React
- TypeScript
- Tailwind CSS
- Prisma
- Postgres
- Vitest
- Playwright
- JWT session cookies with `jose`
- Password hashing with `bcryptjs`
## Local Setup
```bash
cd space-uganda-site
npm install
cp .env.example .env
docker compose up -d
npm run db:push
npm run db:seed
npm run dev
```
Then open:
```text
localhost
```
Default seeded admin credentials come from `.env.example`:
```text
ADMIN_EMAIL=admin@space.org.ug
ADMIN_PASSWORD=ChangeThisBeforeLa …