Automania POD
Automania POD, Etsy satıcıları için tasarlanmış güçlü bir Print-on-Demand stüdyosudur. Mockup düzenleme, toplu üretim ve Etsy SEO araçlarını tek bir yerde sunar.
Translation pending
A marketplace for things worth doing.
Translation pending
CommerceGitHub @defaultdaveOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗ |>
* . /\ \ | / .
/ \ -- ( ) --
. /\ / .. \ / | \
/ \ /\ / : \ *
* / \ / \ / : \ /\
/ .. \ / \ .: \ / \ /\
/\ / .: :. \ \ : \/ \ / \
/ \ /.: :.\ .: \ \ / \
__/ \__/: :\____.:___________\_____\_/ \___
. . : : . .: . . . . . . . . . . . .
you are here --> *
____ _ __ __ ____ _ _____
| _ \ / \ | \/ || __ ) | | | ____|
| |_) | / _ \ | |\/| || _ \ | | | _|
| _ < / ___ \ | | | || |_) || |___ | |___
|_| \_\/_/ \_\|_| |_||____/ |_____||_____|
A marketplace for things worth doing: classes, tours, tastings, and outdoor trips.
Ramble is a demo marketplace for bookable experiences. Guests browse, pick a date, and book a spot; hosts list sessions and get paid. No real money moves: checkout runs on a fake payment gateway.
The site is also an experiment. It is built to prove two things with one project:
| Phase | What happened | When |
|---|---|---|
| P0 Setup | Repo, project manager agent, build plan | Sep 28 |
| P1 Discovery and PRD | 78 requirements, signed off | Oct 18 |
| P2 Research and ADRs | 10 architecture decisions accepted | Oct 18 |
| P3 Design | Mobile-first flow and error states in Figma, signed off | Oct 18 |
| P4 Plan | Seven planning artifacts, frozen at tag plan-frozen-2026-10-20 | Oct 20 |
| P5 Build | In progress: the merge desk (U-118) comes first | From Oct 20 |
| P6 Write-up | Where the plan was wrong, and why | After launch |
The frozen forecast, as ranges rather than single dates:
| Milestone | Likely (P50) | Cautious (P90) |
|---|---|---|
| Prototype: a clickable guest flow on seed data | 2026-12-01 | 2026-12-07 |
| Launch scope from the PRD | 2027-03-08 | 2027-03-29 |
The walking skeleton (U-002) is in place: four route groups with placeholder pages. Real pages replace them unit by unit. Live status, decisions, and the roadmap are in ramble-pm.
The plan is seven artifacts, each built on the one before it:
Three rules keep it honest:
ramble-pm, a project manager agent, runs the plan phase by phase, keeps status and decisions current, and hands work to other agents. Its definition is in .claude/agents/ramble-pm.md.docs/plan/units.yaml is the record of every unit, mirrored to GitHub Issues.main once CI, review, QA, and spec checks pass. Critical units (anything that could oversell a session or double-charge a guest) merge to an integration branch that the owner promotes weekly after a nightly smoke test.Decided in the architecture decision records:
| Area | Choice |
|---|---|
| Framework | Next.js App Router, Server Components by default, Cache Components on |
| Data | Neon Postgres with Drizzle; row-locked booking holds; an append-only money ledger |
| Payments | A fake gateway for the demo; no real money |
| Search | Server-side filtering with the URL as state; no map at launch |
| Styling | CSS Modules with design tokens from Figma; React Aria for the date picker and dialog |
| Quality | Per-PR smoke, accessibility, and Lighthouse budgets; nightly full suite |
| Hosting | Vercel and GitHub Actions |
| Content | About 60 curated experiences, plus a generated 400-experience fixture for scale |
Mobile first throughout: designs start at 390 px wide, and CSS uses min-width breakpoints.
docs/
product/ PRD, client brief, market scan
adr/ architecture decisions and the research behind them
design/ wireframe review, design system plan, tone checklist, Figma library ids
plan/ build plan, the seven artifacts, units.yaml, status, decisions, delta log
scripts/plan/ Bun scripts that compute the plan from units.yaml
.claude/ the PM agent, its skill, and its project memory
Needs Node 24 (.nvmrc) and pnpm 10. Node 25 no longer bundles Corepack, so install it once with npm install -g corepack and then run corepack enable; it reads the pinned version from packageManager in package.json.
pnpm install # also runs `next typegen`, so route and cache-profile types exist from the first open
docker compose up -d --wait # local Postgres 17
cp .env.example .env.local # APP_URL has a default; the two database URLs do not
pnpm db:migrate
SEED_TARGET=local pnpm db:seed # optional: demo data for home and browse
pnpm db:http # second terminal: prints the NEON_HTTP_ENDPOINT line for .env.local
pnpm dev
Guest pages read through Neon's HTTP driver, which cannot reach the Docker Postgres, so without NEON_HTTP_ENDPOINT home and browse show their error state locally. pnpm db:http serves that protocol in front of DATABASE_URL (local databases only, port 4444 or NEON_HTTP_PORT); paste the address it prints into .env.local and restart the app. It works the same under pnpm build && pnpm start. See docs/runbooks/seed.md.
pnpm build:profile builds with React's profiler enabled, so DevTools' Profiler works against pnpm start; set REACT_PROFILING=1 on a Vercel deployment to get the same build there (it is slower, so leave it off for production).
The gates CI runs on every PR (.github/workflows/ci.yml), each a script you can run locally: pnpm format:check, lint, typecheck, test, build, knip, and e2e (Playwright; run pnpm exec playwright install chromium once). Storybook has three local scripts: pnpm storybook (dev server), pnpm storybook:build, and pnpm storybook:test (runs the stories with the a11y gate); its CI job is landing separately. pnpm smoke runs the same Playwright smoke of every route against the built app; the route list is e2e/routes.ts, one row per route. Environment variables are read and validated in one place, src/server/env.ts. Import boundaries between src/app, src/components, src/lib, and src/server are enforced by pnpm lint; tests/lint-boundaries.test.ts fails if a rule is weakened. Secrets, and how to rotate them, are in docs/runbooks/secret-rotation.md. Logging, error tracking, and how to raise an alert are in docs/runbooks/alerting.md. The two-tier Content Security Policy (enforced with a nonce on dynamic routes, report-only on cached ones), the security header set, and security.txt are in docs/runbooks/security-headers.md. The browse address grammar, its cache, and its failure state are in docs/runbooks/browse.md.
Postgres on Neon through Drizzle, all under src/server/db/. db (pooled host, pg Pool) is the only handle that opens a transaction; dbRead (Neon HTTP) is for single reads and never runs a capacity or balance check. Migrations are committed SQL in src/server/db/migrations/: change the schema in src/server/db/schema/, run pnpm db:generate, commit the result, and never drizzle-kit push a shared database. A PR never drops or renames a column the deployed code still reads (expand, then contract in a later PR). pnpm db:migrate uses the direct host, pnpm db:check checks the history, and pnpm test:db runs the *.db.test.ts files against the local Postgres, each in its own schema (createFreshDatabase in tests/db/harness.ts). Previews migrate before the build; production is migrated only by the db-migrate-production workflow, run by hand.
Preview branches come from the Neon integration for Vercel, which gives each preview deployment its own preview/<git branch> database branch and injects its two URLs; the alternative, a GitHub Actions job using Neon's branch actions, would need a Vercel token to hand the URLs to the deployment and would race it, so only the integration creates branches. A GitHub Actions workflow adds what the integration lacks: the 7-day expiry and deleting the branch when the PR merges or closes.
The integration makes a branch's database and URLs only when a deployment is redeployed, so the first build of a new branch has no DATABASE_URL_UNPOOLED. The preview build then skips db:migrate with a warning instead of failing; redeploy once and it migrates.
The scripts need Bun and have no other dependencies.
bun scripts/plan/critical-path.ts
bun scripts/plan/forecast.ts --report estimate
critical-path.ts prints the critical path through the dependency graph. forecast.ts simulates the build with review time as a limited resource; --report resourcing and --report schedule give the staffing options and the dated schedule.
Wireframes and the component library are in Figma: Ramble Core Flow Wireframes.