From 93aa81d9dc22b202d1294316692cd320aac4a29e Mon Sep 17 00:00:00 2001 From: gaboesquivel Date: Fri, 4 Sep 2026 22:52:18 -0600 Subject: [PATCH 1/2] docs: add MIT license and after-fork Product Ready --- .../workflow/onboard-new-developer/SKILL.md | 2 +- .cursor/rules/frontend/e2e-playwright.mdc | 3 +- .github/workflows/web-e2e.yml | 10 ---- LICENSE | 21 ++++++++ README.md | 5 +- _first/basilic/API.md | 2 +- _first/basilic/ARCHITECTURE.md | 6 +-- _first/basilic/DOCUMENTATION.md | 2 +- _first/basilic/JOURNEYS.md | 2 +- _first/basilic/PIPELINES.md | 2 +- _first/basilic/PRODUCT.md | 15 +++--- apps/api/.env.defaults.example | 11 ++-- apps/api/package.json | 2 +- apps/docu/content/docs/architecture/ai.mdx | 2 +- apps/docu/content/docs/architecture/index.mdx | 6 +-- .../content/docs/architecture/portability.mdx | 23 ++++---- .../docs/deployment/github-actions.mdx | 2 +- .../content/docs/development/after-fork.mdx | 53 +++++++++++++++++++ .../content/docs/development/cursor-setup.mdx | 3 -- apps/docu/content/docs/development/index.mdx | 7 ++- apps/docu/content/docs/development/meta.json | 1 + .../docu/content/docs/testing/e2e-testing.mdx | 2 +- .../content/docs/testing/product-ready.mdx | 13 ++--- apps/web/.env.development | 4 +- apps/web/.env.local.example | 3 +- apps/web/.env.production | 2 +- apps/web/.env.staging | 2 +- apps/web/e2e/anthropic-key.ts | 5 ++ apps/web/e2e/chat-assistant.spec.ts | 2 + apps/web/playwright.config.ts | 27 ++++++---- package.json | 1 + packages/error/package.json | 2 +- packages/utils/package.json | 2 +- tools/eslint/README.md | 2 +- tools/typescript/README.md | 2 +- tools/typescript/package.json | 2 +- 36 files changed, 166 insertions(+), 85 deletions(-) create mode 100644 LICENSE create mode 100644 apps/docu/content/docs/development/after-fork.mdx create mode 100644 apps/web/e2e/anthropic-key.ts diff --git a/.agents/skills/workflow/onboard-new-developer/SKILL.md b/.agents/skills/workflow/onboard-new-developer/SKILL.md index 27042cec..287f7e5f 100644 --- a/.agents/skills/workflow/onboard-new-developer/SKILL.md +++ b/.agents/skills/workflow/onboard-new-developer/SKILL.md @@ -12,7 +12,7 @@ Comprehensive onboarding process to get a new developer up and running quickly. 4. **Start local Postgres**: `pnpm --filter @repo/api db:start` (`setup` does not start Supabase) 5. **Reset and seed**: `pnpm reset` from repo root (Supabase reset + Drizzle migrate + seed). See `apps/api/README.md` and ADR 008 6. **Run web/API**: `pnpm dev` (API + Next.js) -7. **First login**: Magic link, or `ALLOW_TEST=true` + `test@test.ai`. Signed-in home is `/` +7. **First login**: Copied env has `ALLOW_TEST=true`. Use `test@test.ai`. Signed-in home is `/`. Resend is optional. 8. **Run mobile (optional)**: `pnpm --filter @repo/mobile start` (or `start:localhost` / `start:tunnel` for remote). See `apps/docu/content/docs/development/dev-environments.mdx` 9. **Verify**: Web loads, API `GET /health` succeeds, simulator/device can reach the API if running mobile 10. **Project familiarization**: Review `_first/basilic/PRODUCT.md` and architecture MDX; run tests when changing code; submit first PR diff --git a/.cursor/rules/frontend/e2e-playwright.mdc b/.cursor/rules/frontend/e2e-playwright.mdc index 17cc53ff..0bb21309 100644 --- a/.cursor/rules/frontend/e2e-playwright.mdc +++ b/.cursor/rules/frontend/e2e-playwright.mdc @@ -18,13 +18,14 @@ alwaysApply: false - Confirm dialogs use `getByRole('alertdialog')` (shadcn AlertDialog), not `dialog` ## Projects (dependency graph) -`public` → `auth` → `setup` → `{chromium, security, passkey-login}`; `chromium` → `chat` +`public` → `auth` → `setup` → `{chromium, security, passkey-login}`; `chromium` → `chat` (chat omitted without a real Anthropic key) - **public**: no storageState - **auth**: empty storageState; numbered `01-`…`06-` specs (file-name order is the convention — `testMatch` only selects files, it does not impose execution order) - **setup**: `auth.setup.ts` writes `test-results/.auth/user.json` (depends on auth) - **chromium** / **security** / **chat**: `storageState` from setup file - **passkey-login**: empty storageState; dedicated `e2e-passkey@test.ai` +- **chat**: omitted when `hasRealAnthropicKey()` is false (`e2e/anthropic-key.ts`; empty, `sk-ant-xxx`, `sk-ant-dummy*`) ## Session model - Setup project logs in once; authed projects reuse `user.json` with a **new context per test** diff --git a/.github/workflows/web-e2e.yml b/.github/workflows/web-e2e.yml index 56738eff..57ed8893 100644 --- a/.github/workflows/web-e2e.yml +++ b/.github/workflows/web-e2e.yml @@ -59,16 +59,6 @@ jobs: - name: Build run: pnpm turbo run build --filter=@repo/web... - uses: ./.github/actions/setup-playwright - - name: Verify ANTHROPIC_API_KEY for E2E (AI_PROVIDER=anthropic) - shell: bash - env: - AI_PROVIDER: ${{ env.AI_PROVIDER }} - ANTHROPIC_API_KEY: ${{ env.ANTHROPIC_API_KEY }} - run: | - if [[ "${AI_PROVIDER}" == "anthropic" && -z "${ANTHROPIC_API_KEY}" ]]; then - echo "::error::AI_PROVIDER is anthropic but ANTHROPIC_API_KEY is empty or unset. Set the ANTHROPIC_API_KEY repository secret; required before E2E tests (local)." >&2 - exit 1 - fi - name: E2E tests (local) env: SKIP_BUILD: '1' diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..6038d2f7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Gabo Esquivel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 93f250c9..f4606a88 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Fork-and-run developer starter: typed SDKs, self-hosted auth, a portable architecture, Cursor-first workflow, and a thin web demo. Fastify • OpenAPI • Next.js • Expo scaffold — one stack, multiple clients. -> 🚧 **Active development** — Explore, fork, and contribute. 🏗️ +MIT licensed. Start a product with GitHub **Use this template**, or fork to contribute back. First successful use is [Product Ready](https://basilic-docs.vercel.app/docs/testing/product-ready) (`pnpm setup`, `db:start`, `pnpm reset`, `pnpm dev`, `test@test.ai`). After you own the copy: [After fork](https://basilic-docs.vercel.app/docs/development/after-fork). ## Features @@ -95,8 +95,9 @@ Run with `pnpm