chore: initialize monorepo wrapper
This commit is contained in:
25
.env.example
Normal file
25
.env.example
Normal file
@@ -0,0 +1,25 @@
|
||||
# Root environment for docker compose
|
||||
|
||||
# Required by POCSite. Must be a 32-byte hex string.
|
||||
ENCRYPTION_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
|
||||
|
||||
# Public site URL exposed from the host.
|
||||
NEXT_PUBLIC_APP_URL=http://localhost:3000
|
||||
|
||||
# Postgres service defaults used by compose and Prisma.
|
||||
POSTGRES_DB=pocdb
|
||||
POSTGRES_USER=pocuser
|
||||
POSTGRES_PASSWORD=pocpassword
|
||||
|
||||
# Runtime toggle for Prisma migrations on container startup.
|
||||
RUN_MIGRATIONS=true
|
||||
|
||||
# Pipeline service retry behavior.
|
||||
PIPELINE_RETRY_LIMIT=1
|
||||
|
||||
# LLM provider credentials for POCGraphGen.
|
||||
ANTHROPIC_API_KEY=
|
||||
OPENAI_API_KEY=
|
||||
AZURE_OPENAI_API_KEY=
|
||||
AZURE_OPENAI_ENDPOINT=
|
||||
GOOGLE_API_KEY=
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
[submodule "POCGraphGen"]
|
||||
path = POCGraphGen
|
||||
url = ./POCGraphGen
|
||||
[submodule "POCSite"]
|
||||
path = POCSite
|
||||
url = ./POCSite
|
||||
1
POCGraphGen
Submodule
1
POCGraphGen
Submodule
Submodule POCGraphGen added at 2df6663984
1
POCSite
Submodule
1
POCSite
Submodule
Submodule POCSite added at 71b1696c52
105
README.md
Normal file
105
README.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# DUBSOFT Monorepo
|
||||
|
||||
This repository is a root wrapper around two child applications:
|
||||
|
||||
- `POCSite`: Next.js application with Prisma-backed persistence
|
||||
- `POCGraphGen`: Bun/TypeScript pipeline service
|
||||
|
||||
The stack is orchestrated from the root with Docker Compose and runs all services on a shared Docker network:
|
||||
|
||||
- `poc-site`: web app on `http://localhost:3000`
|
||||
- `poc-graph-gen`: pipeline service on `http://localhost:3001`
|
||||
- `poc-db`: PostgreSQL database on `localhost:5432`
|
||||
|
||||
## Repository Layout
|
||||
|
||||
```text
|
||||
.
|
||||
├── POCGraphGen/
|
||||
├── POCSite/
|
||||
├── .env.example
|
||||
├── .gitmodules
|
||||
└── compose.yml
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Docker
|
||||
- Docker Compose
|
||||
- Git
|
||||
|
||||
## Setup
|
||||
|
||||
1. Create a local environment file:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
2. Edit `.env` and set at minimum:
|
||||
|
||||
- `ENCRYPTION_KEY`
|
||||
- one LLM provider key for `POCGraphGen` such as `OPENROUTER_API_KEY`, `OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`
|
||||
|
||||
3. Start the stack:
|
||||
|
||||
```bash
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
## Services
|
||||
|
||||
### `poc-site`
|
||||
|
||||
- Source: `POCSite/`
|
||||
- Host URL: `http://localhost:3000`
|
||||
- Connects to Postgres through `DATABASE_URL`
|
||||
- Calls the pipeline service over the internal Docker network
|
||||
|
||||
### `poc-graph-gen`
|
||||
|
||||
- Source: `POCGraphGen/`
|
||||
- Host URL: `http://localhost:3001`
|
||||
- Internal service URL from other containers: `http://poc-graph-gen:3000`
|
||||
- Requires at least one configured LLM provider credential
|
||||
|
||||
### `poc-db`
|
||||
|
||||
- Image: `postgres:16-alpine`
|
||||
- Host port: `5432`
|
||||
- Data is persisted in the `poc-db-data` Docker volume
|
||||
|
||||
## Common Commands
|
||||
|
||||
Start in the foreground:
|
||||
|
||||
```bash
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
Start in the background:
|
||||
|
||||
```bash
|
||||
docker compose up --build -d
|
||||
```
|
||||
|
||||
Stop the stack:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
Stop the stack and remove volumes:
|
||||
|
||||
```bash
|
||||
docker compose down -v
|
||||
```
|
||||
|
||||
## Git Submodules
|
||||
|
||||
Both child projects are registered as git submodules from the root repository.
|
||||
|
||||
Current note:
|
||||
- the submodule URLs are local paths right now, so this setup is correct for this machine but not yet portable for fresh clones from another machine
|
||||
|
||||
If you later add remotes for `POCSite` and `POCGraphGen`, update `.gitmodules` to point at those repository URLs.
|
||||
58
compose.yml
Normal file
58
compose.yml
Normal file
@@ -0,0 +1,58 @@
|
||||
services:
|
||||
poc-db:
|
||||
image: postgres:16-alpine
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:-pocdb}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-pocuser}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-pocpassword}
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- poc-db-data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- poc-network
|
||||
|
||||
poc-graph-gen:
|
||||
build:
|
||||
context: ./POCGraphGen
|
||||
dockerfile: Dockerfile
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
PORT: 3000
|
||||
PIPELINE_RETRY_LIMIT: ${PIPELINE_RETRY_LIMIT:-1}
|
||||
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
|
||||
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
|
||||
AZURE_OPENAI_API_KEY: ${AZURE_OPENAI_API_KEY:-}
|
||||
AZURE_OPENAI_ENDPOINT: ${AZURE_OPENAI_ENDPOINT:-}
|
||||
GOOGLE_API_KEY: ${GOOGLE_API_KEY:-}
|
||||
ports:
|
||||
- "3001:3000"
|
||||
networks:
|
||||
- poc-network
|
||||
|
||||
poc-site:
|
||||
build:
|
||||
context: ./POCSite
|
||||
dockerfile: Dockerfile
|
||||
depends_on:
|
||||
- poc-db
|
||||
- poc-graph-gen
|
||||
environment:
|
||||
PIPELINE_SERVICE_URL: http://poc-graph-gen:3000
|
||||
DATABASE_URL: postgresql://${POSTGRES_USER:-pocuser}:${POSTGRES_PASSWORD:-pocpassword}@poc-db:5432/${POSTGRES_DB:-pocdb}?schema=public
|
||||
ENCRYPTION_KEY: ${ENCRYPTION_KEY:?ENCRYPTION_KEY must be set}
|
||||
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL:-http://localhost:3000}
|
||||
HOSTNAME: 0.0.0.0
|
||||
PORT: 3000
|
||||
RUN_MIGRATIONS: ${RUN_MIGRATIONS:-true}
|
||||
ports:
|
||||
- "3000:3000"
|
||||
networks:
|
||||
- poc-network
|
||||
|
||||
volumes:
|
||||
poc-db-data:
|
||||
|
||||
networks:
|
||||
poc-network:
|
||||
driver: bridge
|
||||
Reference in New Issue
Block a user