@yosr-ai/template-next-fullstack 0.1.0-alpha.5 → 0.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/README.md +6 -11
- package/features/deploy-docker/files/Dockerfile +1 -0
- package/features/deploy-docker/files/compose.yaml +3 -0
- package/features/deploy-docker/snippets/readme-docker.md +17 -0
- package/features/deploy-docker-npm/files/Dockerfile +1 -0
- package/features/deploy-docker-postgres/snippets/app-config.yaml +6 -0
- package/features/deploy-docker-postgres/snippets/compose-header.yaml +2 -0
- package/features/deploy-docker-postgres/snippets/compose-volumes.yaml +2 -0
- package/features/deploy-docker-postgres/snippets/postgres-service.yaml +12 -0
- package/features/deploy-docker-postgres/snippets/readme-docker.md +18 -0
- package/features/deploy-docker-prisma/snippets/docker-pre-install.Dockerfile +3 -0
- package/files/README.md +2 -2
- package/package.json +5 -5
- package/rules/architecture.md +1 -1
- package/seed.template.json +101 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @yosr-ai/template-next-fullstack
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.7
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8d7a4e5: Add the FastAPI template (`--template fastapi`, ADRs 0017 and 0018): uv, Python 3.12+, Pydantic v2, Ruff, Pyright, pytest, a notes API, database none/SQLite/Postgres, API-key auth, Docker. `--template` selection (TTY asks Template first; otherwise `next-fullstack` with a `Using template:` line), `yosr-seed gate`, and Python/uv info lines in `doctor`.
|
|
8
|
+
- f3b8706: Named style profiles (ADR 0015): `profiles/<name>.json` + `config.json`, migrate from `profile.json`, create `--profile <name>`, and record `profileName` / `profileHash` in `.seed/`.
|
|
9
|
+
- edded9a: Add create-time `--workflow` (Local / GitHub / None) with engine-level tracker files, agent pointer files, and AGENTS.md loop docs (ADR 0016).
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 2309eb3: CLI dogfood fixes: forward TTY for `profile create`, default editor when VISUAL/EDITOR unset, and saved-style labels from applied style.
|
|
14
|
+
- c43a813: Drop stale legal-review wording now that the Yosr Seed License text is accepted, trim the invalid `@alpha@<version>` note from the CLI READMEs, and add a docker-prisma golden for the Prisma Docker pre-install COPY and compose wiring.
|
|
15
|
+
- 394a9fb: Template dogfood: Docker README for database=none, project-name image tag, seed.yosr.ai link, and app-pages zones under src/app/** (no (app) group).
|
|
16
|
+
|
|
17
|
+
## 0.1.0-alpha.6
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 9a2dfd0: Postgres + Docker Compose publishes 5432, waits on `pg_isready`, sets app `DATABASE_URL` to the `postgres` service, and documents a host `db:push` schema step before `docker compose up --build`. Prisma images copy the schema before install so `prisma generate` works.
|
|
22
|
+
- 7b41bfb: Yosr Seed CLI packages use the Yosr Seed License from 0.1.0; the template stays MIT; generated projects belong to you. Alphas through 0.1.0-alpha.5 remain MIT.
|
|
23
|
+
- 700d8bd: npm-facing READMEs for users without the private repo, homepage and bugs email on the packages, and a contact address on the Yosr Seed License.
|
|
24
|
+
|
|
3
25
|
## 0.1.0-alpha.5
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Wael Zohny / Yosr AI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
# `@yosr-ai/template-next-fullstack`
|
|
2
2
|
|
|
3
|
-
The Yosr Seed next-fullstack template. License: MIT
|
|
3
|
+
The **Yosr Seed** next-fullstack template. License: **MIT**. Node.js `>=24`.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
You normally get this package through [`create-yosr-seed`](https://www.npmjs.com/package/create-yosr-seed) / [`yosr-seed`](https://www.npmjs.com/package/yosr-seed); you do not need to install it by hand to create a project.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- `files/`: the base. It is a real Next.js app that installs, lints, type-checks, builds and tests on its own (checked). Files sit at the **default** layout's concrete paths (`src/features`, `src/shared`, `src/server`); the renderer relocates them for other layouts. `gitignore` is renamed to `.gitignore` on render (npm strips `.gitignore` from published packages).
|
|
9
|
-
- `features/orm-drizzle/`: Postgres + Drizzle overlay (replaces the in-memory notes store). `database: none` is the base without this overlay.
|
|
10
|
-
- `features/orm-prisma/`: Postgres + Prisma overlay (same role as Drizzle: schema, client, notes store via `replaces`). `prisma generate` runs on install. The generated client is not committed.
|
|
11
|
-
- `features/deploy-vercel/`: README section only.
|
|
12
|
-
- `features/deploy-docker/`: Dockerfile, `.dockerignore`, and `compose.yaml` for `deploy: docker`. The `next-config` anchor turns on `output: "standalone"` only when `YOSR_STANDALONE=1`, which the Dockerfile sets for the image build. Local `next start` does not use standalone output. `features/deploy-docker-postgres/` adds a Postgres service to that compose file when `database` is `postgres`. The image build is a non-required gate step (`--image`).
|
|
13
|
-
- `style/errors-result/`: variant tree for `errors.pattern = result`.
|
|
14
|
-
- `rules/`: agent-rule fragments and the architecture note source.
|
|
7
|
+
## Bugs and feedback
|
|
15
8
|
|
|
16
|
-
|
|
9
|
+
Email **wzohny@gmail.com**. The source repository is private, so there is no public issue tracker.
|
|
10
|
+
|
|
11
|
+
Site: [seed.yosr.ai](https://seed.yosr.ai)
|
|
@@ -6,6 +6,7 @@ ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
6
6
|
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
|
7
7
|
|
|
8
8
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
|
9
|
+
# @seed:anchor docker-pre-install
|
|
9
10
|
RUN corepack enable && __seed_pmInstallCi__
|
|
10
11
|
COPY . .
|
|
11
12
|
# Standalone output is for this image only. Local `next start` leaves this unset.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Docker
|
|
2
|
+
|
|
3
|
+
Build and run the app with Compose:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
docker compose up --build
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Or build the image alone:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
__seed_pmRun__ image:build
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
That tags `__seed_projectSlug__:latest`. Then open http://localhost:3000.
|
|
16
|
+
|
|
17
|
+
The Dockerfile sets `YOSR_STANDALONE=1` so Next.js emits a standalone server. The image does not read `.env.local` (see `.dockerignore`).
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
postgres:
|
|
2
2
|
image: postgres:18.6-alpine
|
|
3
3
|
environment:
|
|
4
|
+
# Local-dev default password only — change for anything beyond local use.
|
|
4
5
|
POSTGRES_PASSWORD: postgres
|
|
6
|
+
# Change the left side if a local Postgres already uses 5432.
|
|
7
|
+
ports:
|
|
8
|
+
- "5432:5432"
|
|
9
|
+
volumes:
|
|
10
|
+
# Postgres 18+ stores data under a versioned subdir of /var/lib/postgresql.
|
|
11
|
+
- postgres_data:/var/lib/postgresql
|
|
12
|
+
healthcheck:
|
|
13
|
+
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
14
|
+
interval: 5s
|
|
15
|
+
timeout: 5s
|
|
16
|
+
retries: 5
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## Postgres with Docker
|
|
2
|
+
|
|
3
|
+
Postgres is wired in `compose.yaml` (`DATABASE_URL` uses the `postgres` service hostname). Local-dev password is `postgres` — change it for anything beyond local use.
|
|
4
|
+
|
|
5
|
+
1. Start Postgres and create tables (from the project root, with Node deps installed):
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
docker compose up -d postgres
|
|
9
|
+
DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres __seed_pmRun__ db:push
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
2. Build and run the app (see the Docker section above for Compose / `image:build`):
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
docker compose up --build
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
For a bare `docker run` of the image, pass `-e DATABASE_URL=...` yourself. The image does not read `.env.local` (see `.dockerignore`).
|
package/files/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# __seed_projectName__
|
|
2
2
|
|
|
3
|
-
Generated by [Yosr Seed](https://yosr.ai) from the `__seed_templateName__@__seed_templateVersion__` template.
|
|
3
|
+
Generated by [Yosr Seed](https://seed.yosr.ai) from the `__seed_templateName__@__seed_templateVersion__` template.
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
@@ -13,6 +13,6 @@ Generated by [Yosr Seed](https://yosr.ai) from the `__seed_templateName__@__seed
|
|
|
13
13
|
| E2E smoke test (Playwright) | `__seed_pmRun__ test:e2e` |
|
|
14
14
|
| Format | `__seed_pmRun__ format` |
|
|
15
15
|
|
|
16
|
-
Agent rules live in `AGENTS.md` (
|
|
16
|
+
Agent rules live in `AGENTS.md` (Claude Code via `CLAUDE.md`, Cursor via `.cursor/rules/`, GitHub Copilot via `.github/copilot-instructions.md`, Gemini via `GEMINI.md`). The architecture note is in `docs/architecture.md`.
|
|
17
17
|
|
|
18
18
|
<!-- @seed:anchor readme-sections -->
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yosr-ai/template-next-fullstack",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.7",
|
|
4
4
|
"description": "Yosr Seed next-fullstack template.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"directory": "packages/template-next-fullstack"
|
|
6
|
+
"homepage": "https://seed.yosr.ai",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"email": "wzohny@gmail.com"
|
|
10
9
|
},
|
|
11
10
|
"type": "module",
|
|
12
11
|
"exports": {
|
|
@@ -16,6 +15,7 @@
|
|
|
16
15
|
"files": [
|
|
17
16
|
"README.md",
|
|
18
17
|
"CHANGELOG.md",
|
|
18
|
+
"LICENSE",
|
|
19
19
|
"seed.template.json",
|
|
20
20
|
"files",
|
|
21
21
|
"features",
|
package/rules/architecture.md
CHANGED
|
@@ -8,4 +8,4 @@ Next.js (App Router) + TypeScript, Tailwind CSS v4 + shadcn/ui, Vitest (unit) +
|
|
|
8
8
|
|
|
9
9
|
## Request flow
|
|
10
10
|
|
|
11
|
-
`src/app/page.tsx` (Server Component) reads notes through the feature store, renders `NoteForm` (client) and `NoteList` (server). The form posts to a server action, which validates with zod, stores the note and revalidates the page.
|
|
11
|
+
`src/app/page.tsx` (Server Component) reads notes through the feature store, renders `NoteForm` (client) and `NoteList` (server). The form posts to a server action, which validates with zod, stores the note and revalidates the page. App routes live under `src/app/` (no `(app)` route group); API handlers under `src/app/api/` and auth sign-in/sign-up pages stay with their features.
|
package/seed.template.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "../../../docs/engineering/schemas/seed.template.schema.json",
|
|
3
3
|
"schemaVersion": "0.1",
|
|
4
4
|
"name": "next-fullstack",
|
|
5
|
-
"version": "0.1.0-alpha.
|
|
5
|
+
"version": "0.1.0-alpha.7",
|
|
6
6
|
"title": "Next.js full-stack (TypeScript)",
|
|
7
7
|
"description": "Prototype of Yosr Seed's first base template (Next.js + TypeScript, Tailwind + shadcn/ui, Vitest + Playwright smoke test). Implemented: base files with the ADR 0006 defaults, the orm-drizzle and orm-prisma overlays (database=postgres), database=none (base without either overlay), deploy=docker (standalone image, compose Postgres only when database=postgres), Auth.js, Clerk, tRPC, Stripe, and a recorded AI delta for domain-features. x-prototype.stubbedFeatures is empty. Dependency versions pinned from the npm registry on 2026-10-19 (Prisma adapter on 2026-10-28, Clerk on 2026-10-28, tRPC on 2026-10-29, Stripe on 2026-10-29).",
|
|
8
8
|
"license": "MIT",
|
|
@@ -261,6 +261,42 @@
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
]
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"id": "workflow",
|
|
267
|
+
"type": "enum",
|
|
268
|
+
"label": {
|
|
269
|
+
"cli": "Workflow",
|
|
270
|
+
"wizard": "How should agents track work?"
|
|
271
|
+
},
|
|
272
|
+
"help": {
|
|
273
|
+
"cli": "Local Markdown tracker, GitHub issue/PR templates, or neither.",
|
|
274
|
+
"wizard": "Local files under work/, GitHub templates only, or skip the tracker."
|
|
275
|
+
},
|
|
276
|
+
"default": "local",
|
|
277
|
+
"choices": [
|
|
278
|
+
{
|
|
279
|
+
"value": "local",
|
|
280
|
+
"label": {
|
|
281
|
+
"cli": "Local",
|
|
282
|
+
"wizard": "Markdown tracker under work/ (default)"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"value": "github",
|
|
287
|
+
"label": {
|
|
288
|
+
"cli": "GitHub",
|
|
289
|
+
"wizard": "Issue and PR templates (no API calls)"
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"value": "none",
|
|
294
|
+
"label": {
|
|
295
|
+
"cli": "None",
|
|
296
|
+
"wizard": "No tracker files; keep zones only"
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
]
|
|
264
300
|
}
|
|
265
301
|
],
|
|
266
302
|
"constraints": [
|
|
@@ -868,7 +904,7 @@
|
|
|
868
904
|
"equals": "docker"
|
|
869
905
|
},
|
|
870
906
|
"scripts": {
|
|
871
|
-
"image:build": "docker build -t
|
|
907
|
+
"image:build": "docker build -t __seed_projectSlug__:latest ."
|
|
872
908
|
},
|
|
873
909
|
"patches": [
|
|
874
910
|
{
|
|
@@ -876,6 +912,13 @@
|
|
|
876
912
|
"target": "next.config.ts",
|
|
877
913
|
"anchor": "next-config",
|
|
878
914
|
"content": "...(process.env.YOSR_STANDALONE === \"1\" ? { output: \"standalone\" as const } : {}),"
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
"op": "insert",
|
|
918
|
+
"target": "README.md",
|
|
919
|
+
"anchor": "readme-sections",
|
|
920
|
+
"source": "features/deploy-docker/snippets/readme-docker.md",
|
|
921
|
+
"position": "before"
|
|
879
922
|
}
|
|
880
923
|
]
|
|
881
924
|
},
|
|
@@ -901,6 +944,34 @@
|
|
|
901
944
|
"Dockerfile"
|
|
902
945
|
]
|
|
903
946
|
},
|
|
947
|
+
{
|
|
948
|
+
"id": "deploy-docker-prisma",
|
|
949
|
+
"description": "Combination overlay: copy Prisma schema before the Docker install stage so postinstall can generate the client.",
|
|
950
|
+
"when": {
|
|
951
|
+
"all": [
|
|
952
|
+
{
|
|
953
|
+
"option": "deploy",
|
|
954
|
+
"equals": "docker"
|
|
955
|
+
},
|
|
956
|
+
{
|
|
957
|
+
"option": "orm",
|
|
958
|
+
"equals": "prisma"
|
|
959
|
+
}
|
|
960
|
+
]
|
|
961
|
+
},
|
|
962
|
+
"after": [
|
|
963
|
+
"deploy-docker",
|
|
964
|
+
"deploy-docker-npm"
|
|
965
|
+
],
|
|
966
|
+
"patches": [
|
|
967
|
+
{
|
|
968
|
+
"op": "insert",
|
|
969
|
+
"target": "Dockerfile",
|
|
970
|
+
"anchor": "docker-pre-install",
|
|
971
|
+
"source": "features/deploy-docker-prisma/snippets/docker-pre-install.Dockerfile"
|
|
972
|
+
}
|
|
973
|
+
]
|
|
974
|
+
},
|
|
904
975
|
{
|
|
905
976
|
"id": "deploy-docker-postgres",
|
|
906
977
|
"description": "Combination overlay: adds a Postgres service to the compose file.",
|
|
@@ -920,11 +991,36 @@
|
|
|
920
991
|
"deploy-docker"
|
|
921
992
|
],
|
|
922
993
|
"patches": [
|
|
994
|
+
{
|
|
995
|
+
"op": "insert",
|
|
996
|
+
"target": "compose.yaml",
|
|
997
|
+
"anchor": "compose-header",
|
|
998
|
+
"source": "features/deploy-docker-postgres/snippets/compose-header.yaml"
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
"op": "insert",
|
|
1002
|
+
"target": "compose.yaml",
|
|
1003
|
+
"anchor": "app-config",
|
|
1004
|
+
"source": "features/deploy-docker-postgres/snippets/app-config.yaml"
|
|
1005
|
+
},
|
|
923
1006
|
{
|
|
924
1007
|
"op": "insert",
|
|
925
1008
|
"target": "compose.yaml",
|
|
926
1009
|
"anchor": "services",
|
|
927
1010
|
"source": "features/deploy-docker-postgres/snippets/postgres-service.yaml"
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
"op": "insert",
|
|
1014
|
+
"target": "compose.yaml",
|
|
1015
|
+
"anchor": "compose-root",
|
|
1016
|
+
"source": "features/deploy-docker-postgres/snippets/compose-volumes.yaml"
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
"op": "insert",
|
|
1020
|
+
"target": "README.md",
|
|
1021
|
+
"anchor": "readme-sections",
|
|
1022
|
+
"source": "features/deploy-docker-postgres/snippets/readme-docker.md",
|
|
1023
|
+
"position": "before"
|
|
928
1024
|
}
|
|
929
1025
|
]
|
|
930
1026
|
}
|
|
@@ -1187,13 +1283,13 @@
|
|
|
1187
1283
|
},
|
|
1188
1284
|
{
|
|
1189
1285
|
"id": "app-pages",
|
|
1190
|
-
"intent": "Pages and layouts
|
|
1286
|
+
"intent": "Pages and layouts under src/app/**, composed from shadcn/ui. Leave src/app/api/** and auth sign-in/sign-up routes to their own features; this template never creates src/app/(app)/.",
|
|
1191
1287
|
"paths": {
|
|
1192
1288
|
"create": [
|
|
1193
|
-
"src/app
|
|
1289
|
+
"src/app/**"
|
|
1194
1290
|
],
|
|
1195
1291
|
"modify": [
|
|
1196
|
-
"src/app
|
|
1292
|
+
"src/app/**"
|
|
1197
1293
|
]
|
|
1198
1294
|
},
|
|
1199
1295
|
"context": [
|