From 4416aaf6d9500ee79a999d7c4ba23987301a1eec Mon Sep 17 00:00:00 2001 From: rdev-worker Date: Mon, 9 Feb 2026 19:51:18 +0000 Subject: [PATCH] build: Set up the monorepo workspace. Ensure the root README describes a pro... --- Dockerfile | 20 +++++++++++--- README.md | 52 ++++++++++++++++++++++++++++-------- package.json | 18 +++++++++++++ packages/shared/package.json | 12 +++++++++ packages/shared/src/index.js | 1 + packages/web/package.json | 15 +++++++++++ packages/web/src/index.js | 1 + 7 files changed, 105 insertions(+), 14 deletions(-) create mode 100644 package.json create mode 100644 packages/shared/package.json create mode 100644 packages/shared/src/index.js create mode 100644 packages/web/package.json create mode 100644 packages/web/src/index.js diff --git a/Dockerfile b/Dockerfile index e7846dc..aa2fa6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,22 @@ -# Default Dockerfile - replace with your application +# Stage 1: Install dependencies and build +FROM node:18-alpine AS build + +WORKDIR /app + +COPY package.json package-lock.json* ./ +COPY packages/shared/package.json ./packages/shared/ +COPY packages/web/package.json ./packages/web/ + +RUN npm install --ignore-scripts + +COPY packages/ ./packages/ + +RUN npm run build + +# Stage 2: Serve FROM nginx:alpine -# Copy static files or your app -COPY . /usr/share/nginx/html/ +COPY --from=build /app/packages/web/dist /usr/share/nginx/html/ EXPOSE 80 diff --git a/README.md b/README.md index 1c809c8..c31663c 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,49 @@ -# foundary-1770666514 +# Foundary -Deployed at: https://ks9ftyd2.threesix.ai +Foundary is a product studio for conversational product development. It provides the tools and infrastructure to go from idea to shipped product through structured conversation — turning dialogue into design decisions, code, and deployable artifacts. -## Getting Started +## How it works -1. Clone the repository -2. Build with Docker: `docker build -t foundary-1770666514 .` -3. Run locally: `docker run -p 8080:8080 foundary-1770666514` +1. **Converse** — Describe what you want to build in plain language. Foundary captures intent, constraints, and requirements through iterative dialogue. +2. **Shape** — Conversations produce concrete specs, wireframes, and architecture decisions stored as version-controlled artifacts. +3. **Build** — Specs flow into implementation. Shared libraries, components, and business logic live in a unified monorepo so everything stays in sync. +4. **Ship** — Every push to `main` triggers an automated build and deployment pipeline. Products go live continuously. -## CI/CD +## Repository structure -This project uses Woodpecker CI for continuous deployment. Pushing to `main` will: -- Build a Docker image -- Push to the container registry -- Deploy to Kubernetes +This is an npm workspaces monorepo. All packages live under `packages/`: + +``` +packages/ + shared/ — shared types, utilities, and constants (@foundary/shared) + web/ — web application (@foundary/web) +``` + +## Getting started + +```bash +# Install all dependencies +npm install + +# Run all workspaces in dev mode +npm run dev + +# Build all workspaces +npm run build + +# Run tests across all workspaces +npm run test +``` + +## Deployment + +Pushes to `main` trigger automatic deployment via Woodpecker CI: + +1. Build Docker image +2. Push to container registry +3. Update Kubernetes deployment + +Live at: https://ks9ftyd2.threesix.ai ## Resources diff --git a/package.json b/package.json new file mode 100644 index 0000000..8dd055b --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "foundary", + "version": "0.1.0", + "private": true, + "description": "Foundary — a product studio for conversational product development", + "workspaces": [ + "packages/*" + ], + "scripts": { + "build": "npm run build --workspaces --if-present", + "dev": "npm run dev --workspaces --if-present", + "lint": "npm run lint --workspaces --if-present", + "test": "npm run test --workspaces --if-present" + }, + "engines": { + "node": ">=18" + } +} diff --git a/packages/shared/package.json b/packages/shared/package.json new file mode 100644 index 0000000..7aa183a --- /dev/null +++ b/packages/shared/package.json @@ -0,0 +1,12 @@ +{ + "name": "@foundary/shared", + "version": "0.1.0", + "private": true, + "description": "Shared types, utilities, and constants for Foundary", + "main": "src/index.js", + "scripts": { + "build": "echo 'No build configured yet'", + "lint": "echo 'No linter configured yet'", + "test": "echo 'No tests configured yet'" + } +} diff --git a/packages/shared/src/index.js b/packages/shared/src/index.js new file mode 100644 index 0000000..2860a8d --- /dev/null +++ b/packages/shared/src/index.js @@ -0,0 +1 @@ +// @foundary/shared — shared types, utilities, and constants diff --git a/packages/web/package.json b/packages/web/package.json new file mode 100644 index 0000000..6aa0d5b --- /dev/null +++ b/packages/web/package.json @@ -0,0 +1,15 @@ +{ + "name": "@foundary/web", + "version": "0.1.0", + "private": true, + "description": "Foundary web application", + "scripts": { + "dev": "echo 'No dev server configured yet'", + "build": "echo 'No build configured yet'", + "lint": "echo 'No linter configured yet'", + "test": "echo 'No tests configured yet'" + }, + "dependencies": { + "@foundary/shared": "*" + } +} diff --git a/packages/web/src/index.js b/packages/web/src/index.js new file mode 100644 index 0000000..a9e48fc --- /dev/null +++ b/packages/web/src/index.js @@ -0,0 +1 @@ +// @foundary/web — web application entry point