From 1d23b579fe1c198586b18feae0f77d526fa6af2b Mon Sep 17 00:00:00 2001 From: Mannu Date: Thu, 7 May 2026 02:04:47 +0530 Subject: [PATCH] [S0-T01] Initialize monorepo with packages/engine, packages/api, packages/web directories --- .gitignore | 50 +++++++++++++++++++++ Makefile | 36 +++++++++++++++ README.md | 41 +++++++++++++++++ packages/api/src/remodel_api/.gitkeep | 0 packages/api/tests/.gitkeep | 0 packages/engine/src/remodel_engine/.gitkeep | 0 packages/engine/tests/.gitkeep | 0 packages/web/src/.gitkeep | 0 8 files changed, 127 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 packages/api/src/remodel_api/.gitkeep create mode 100644 packages/api/tests/.gitkeep create mode 100644 packages/engine/src/remodel_engine/.gitkeep create mode 100644 packages/engine/tests/.gitkeep create mode 100644 packages/web/src/.gitkeep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..60cb9e0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,50 @@ +# Python +__pycache__/ +*.py[cod] +*.pyo +.mypy_cache/ +.ruff_cache/ +.pytest_cache/ +*.egg-info/ +dist/ +build/ +.venv/ +venv/ +*.env + +# Poetry +poetry.lock + +# Node +node_modules/ +.next/ +out/ +.pnpm-store/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Parquet / data +*.parquet +*.db +*.sqlite + +# Secrets +.env +.env.local +.env.*.local + +# Coverage +.coverage +htmlcov/ +coverage.xml + +# Alembic +packages/api/alembic/versions/__pycache__/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5eb157a --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +.PHONY: setup dev test lint build clean + +setup: + @echo "==> Installing engine deps" + cd packages/engine && poetry install + @echo "==> Installing api deps" + cd packages/api && poetry install + @echo "==> Installing web deps" + cd packages/web && pnpm install + +dev: + @echo "==> Starting services (Redis, API, worker, web)" + docker compose up -d redis + cd packages/api && poetry run uvicorn remodel_api.main:app --reload --port 8000 & + cd packages/api && poetry run arq remodel_api.workers.main.WorkerSettings & + cd packages/web && pnpm dev + +test: + cd packages/engine && poetry run pytest --cov=remodel_engine --cov-report=term-missing + cd packages/api && poetry run pytest --cov=remodel_api --cov-report=term-missing + +lint: + cd packages/engine && poetry run ruff check . && poetry run mypy src/ + cd packages/api && poetry run ruff check . && poetry run mypy src/ + cd packages/web && pnpm tsc --noEmit && pnpm eslint . + +build: + cd packages/web && pnpm build + +clean: + find . -type d -name __pycache__ -exec rm -rf {} + + find . -type d -name .mypy_cache -exec rm -rf {} + + find . -type d -name .ruff_cache -exec rm -rf {} + + find . -type d -name .pytest_cache -exec rm -rf {} + + find . -type d -name .next -exec rm -rf {} + + find . -type d -name node_modules -exec rm -rf {} + diff --git a/README.md b/README.md new file mode 100644 index 0000000..967987e --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# REmodel + +Python calculation engine + FastAPI backend + Next.js frontend for Indian renewable energy (Solar + Wind + BESS) project finance modeling. + +## Quick start + +```bash +# Prerequisites: Python 3.12, Poetry, Node 20, pnpm, Docker +make setup # install all deps +make dev # start Redis, API worker, API server, web server +``` + +## Services (after `make dev`) + +| Service | URL | +|-------------|-------------------------| +| Web UI | http://localhost:3000 | +| API | http://localhost:8000 | +| API docs | http://localhost:8000/docs | +| Redis | localhost:6379 | + +## Package layout + +``` +packages/ +├── engine/ pip-installable Python calculation library +├── api/ FastAPI + Arq async worker +└── web/ Next.js 14 App Router frontend +``` + +## Common commands + +```bash +make setup # one-time install +make dev # start all services (requires Docker for Redis) +make test # pytest + jest +make lint # ruff + mypy + tsc +make build # production build +``` + +See each package's own `README.md` for package-specific commands. diff --git a/packages/api/src/remodel_api/.gitkeep b/packages/api/src/remodel_api/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/api/tests/.gitkeep b/packages/api/tests/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/engine/src/remodel_engine/.gitkeep b/packages/engine/src/remodel_engine/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/engine/tests/.gitkeep b/packages/engine/tests/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/web/src/.gitkeep b/packages/web/src/.gitkeep new file mode 100644 index 0000000..e69de29