- Hackathon event: CockroachDB × AWS
- Hackathon submission: Engineering Memory OS
Engineering Memory OS is a local-first engineering workspace built with React, FastAPI, CockroachDB, and Redis. The project is containerized using Docker and supports separate development and production configurations through Docker Compose.
- Frontend: React + Vite + TypeScript + Tailwind CSS
- Backend: FastAPI
- Database: CockroachDB
- Cache: Redis
- Containerization: Docker & Docker Compose
- Reverse Proxy (Production): Nginx
.
├── backend/
│ ├── app/
│ ├── Dockerfile
│ └── requirements.txt
│
├── frontend/
│ ├── src/
│ ├── Dockerfile
│ ├── package.json
│ └── pnpm-lock.yaml
│
├── nginx/
│ └── nginx.conf
│
├── docker-compose-dev.yaml
├── docker-compose-prod.yaml
└── README.md
- Docker
- Docker Compose (v2)
- Docker Buildx
Verify installation:
docker --version
docker compose version
docker buildx versionStart the development environment:
docker compose -f docker-compose-dev.yaml up --buildStop the environment:
docker compose -f docker-compose-dev.yaml downRebuild containers:
docker compose -f docker-compose-dev.yaml up --build| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| FastAPI | http://localhost:8000 |
| Swagger UI | http://localhost:8000/docs |
| CockroachDB Admin | http://localhost:8080 |
| Cockroach SQL | localhost:26257 |
| Redis | localhost:6379 |
Build and start:
docker compose -f docker-compose-prod.yaml up --build -dStop:
docker compose -f docker-compose-prod.yaml downView running containers:
docker compose psView logs:
docker compose logsFollow logs:
docker compose logs -fRestart a service:
docker compose restart backendRebuild a single service:
docker compose build backendOpen a shell inside a container:
docker compose exec backend bashor
docker compose exec frontend shStop and remove containers:
docker compose downRemove containers, networks, and volumes:
docker compose down -vBackend services use environment variables provided through Docker Compose.
Typical variables include:
DATABASE_URL=
REDIS_URL=
The frontend displays the health of:
- FastAPI server
- CockroachDB
- Redis
The backend should expose:
GET /health
Example response:
{
"server": true,
"database": true,
"redis": true
}