Research-first publishing platform: journals, community events, groups, and a social creative studio.
Monkeys is a modern, research-first community platform designed for high-quality technical and scientific writing, community events, collaborative groups, and social graphic creation.
This repository is managed as a Turborepo monorepo powered by pnpm workspaces:
the_monkeys/
├── apps/
│ └── the_monkeys/ # Next.js 14 App Router web application
├── packages/
│ ├── ui/ # Shared UI component library (Radix UI + Tailwind CSS)
│ └── config/ # Shared workspace configurations
├── scripts/ # Cross-platform utility scripts (host configuration, etc.)
├── docker-compose.yml # Production Docker Compose definition
├── docker-compose.local.yml # Local Docker Compose setup (bridges to monkeys_engine network)
└── Dockerfile # Multi-stage Docker build with runtime environment support
- Framework: Next.js 14 (App Router) with React 18
- Styling: Tailwind CSS & Radix UI
- Runtime Config:
next-runtime-env(build once, deploy anywhere) - Data Fetching: TanStack Query v5
- Testing: Vitest and @testing-library/react
- Workspace Management: Turborepo with pnpm
- Research Journals & Feed (
/feed,/blog/[slug]): Long-form publishing with rich markdown, code syntax highlighting, and LaTeX math formatting via KaTeX. - Events & RSVP (
/events): Discover and organize community meetups, workshops, and scientific talks with integrated RSVP management and calendar integration. - Research Groups (
/groups): Topic-based collaborative spaces for community research and discussions. - Creative Studio (
/snapshot/new,/cards):- Social Image Templates: Aspect-ratio-adaptive post graphics (Editorial portrait, 1:1 quotes, Instagram carousels, LinkedIn and X shares).
- X / Twitter Screenshots: Stylized tweet renders with custom backgrounds and presets.
- Digital Business Cards: Printable and shareable contact cards (
/cards).
The backend is built in Go and maintained in a dedicated repository:
- Repository: Monkeys Engine
- Communication: The frontend connects via HTTP REST endpoints and WebSocket channels configured through environment variables.
- Runtime Variables: Client-side endpoints are injected at container startup using
next-runtime-env, eliminating the need to bake endpoints into the build bundle.
- Node.js:
18.17.0or later (refer to.nvmrc) - pnpm:
10.0.0or later (configured inpackage.json)
Tip
If pnpm is not installed globally, bootstrap it using npm run install-deps.
git clone https://github.com/the-monkeys/the_monkeys.git
cd the_monkeys
pnpm installCreate .env.local inside apps/the_monkeys:
cp apps/the_monkeys/.env.example apps/the_monkeys/.env.localKey environment variables:
| Variable | Description |
|---|---|
NEXT_PUBLIC_API_URL |
Base HTTP endpoint for the backend API |
NEXT_PUBLIC_API_URL_V2 |
V2 backend HTTP endpoint |
NEXT_PUBLIC_WSS_URL |
WebSocket endpoint for real-time services |
NEXT_PUBLIC_LIVE_URL |
Production/Public application URL |
AUTH_SECRET |
Secret key used for session encryption |
NEXT_PUBLIC_GROWTHBOOK_CLIENT_KEY |
(Optional) Feature flag client key |
To allow authentication cookies to share context with a locally running backend:
make setup-hosts
# or on Linux/macOS:
sudo bash ./scripts/setup-hosts.sh
# or on Windows (PowerShell as Admin):
powershell -ExecutionPolicy Bypass -File "scripts/setup-hosts.ps1"This maps 127.0.0.1 local.monkeys.com.co in your hosts file.
pnpm devThe application will be accessible at http://localhost:3000 (or http://local.monkeys.com.co:3000 if host mapping is configured).
The application provides multi-stage Docker builds utilizing next-runtime-env for runtime environment injection.
# 1. Create root environment file
cp .env.local.example .env.local
# 2. Run container connecting to the local backend network
docker compose -f docker-compose.local.yml upFor production deployment:
cp .env.local.example .env # fill in production values first
docker compose -f docker-compose.yml up -dAll commands can be run from the repository root via Turborepo:
- Contributions are welcome! Read CONTRIBUTING.md for detailed guidelines on setup, branch naming, and pull requests.
- Monkeys is licensed under the Apache 2.0 License.
