Repository navigation
Expand file tree
/
Copy pathprofiles.json
More file actions
18 lines (18 loc) · 12.8 KB
/
Copy pathprofiles.json
File metadata and controls
18 lines (18 loc) · 12.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"astro-content": {"title":"Astro content site","language":"TypeScript","group":"Content websites","kind":["web"],"ui":"server","host":"static","summary":"Content-first websites that pre-render public pages and hydrate selected interactive islands.","shape":"Astro · TypeScript · Content Collections when structured","tradeoff":"Static output needs a separate owner for request-time identity, private data, writes and durable work.","practices":["Keep public content available in generated HTML; validate structured collections and create route templates explicitly.","Keep static output public. Retain backend authorization for private or mutable data and qualify adapters for request-time pages.","Use islands for defined interactions and test keyboard behavior; do not hydrate the whole page without a product reason.","Verify routes, canonical URLs, sitemap, redirects, status codes and 404 behavior on the chosen host."]},
"elixir-phoenix-liveview": {"title":"Phoenix + LiveView","language":"Elixir","group":"Web applications","kind":["web","api"],"ui":"server","host":"server","summary":"Connected products, live updates and background work in one application.","shape":"Phoenix · LiveView · Ecto · PostgreSQL","tradeoff":"A persistent server owns the UI state. Use a separate client for substantial offline work.","practices":["Keep business operations in contexts shared by controllers, LiveViews and workers. Contexts are not automatically processes.","Enforce authorization on every protected operation, including direct context calls and after access is revoked.","Use ordinary functions first. Add processes for state ownership or lifecycle; add durable storage for work that must survive a restart.","Give retried external effects stable idempotency keys. Exercise reconnects, failed jobs and cross-account access."]},
"typescript-next-node": {"title":"Next.js","language":"TypeScript","group":"Web applications","kind":["web","api"],"ui":"full","host":"node","summary":"React interfaces with server rendering, routes and application logic.","shape":"React · Next.js · PostgreSQL · Drizzle","tradeoff":"Server/client boundaries, caching and deployment adapters need deliberate design.","practices":["Keep database imports and secrets in server-only modules. Treat Server Actions and route handlers as authenticated entry points.","Validate external input with schemas and authorize access close to the data. A page redirect is not an access-control boundary.","Commit reviewed SQL migrations. Generate the Better Auth schema into Drizzle's migration path.","Test async Server Components through browser journeys. Exercise logged-out and two-tenant cases, including cached pages."]},
"typescript-react-vite-browser": {"title":"React + Vite","language":"TypeScript","group":"Web applications","kind":["web"],"ui":"client","host":"static","summary":"An interactive browser app connected to an existing or separate API.","shape":"React · Vite · TypeScript · your API","tradeoff":"This is a frontend. Your backend still owns identity, data permissions and durable work.","practices":["Keep credentials, SQL access and authorization behind the API. Browser validation does not establish permission.","Keep strict TypeScript and validate API responses where data crosses trust boundaries.","Choose a router and server-state cache only when navigation and data complexity need them.","Test production asset paths and direct navigation to nested routes. Offline use needs explicit storage, synchronization and conflict rules."]},
"rails-hotwire-postgresql": {"title":"Rails + Hotwire","language":"Ruby","group":"Web applications","kind":["web","api"],"ui":"server","host":"server","summary":"Database-backed products with HTML, accounts and jobs close together.","shape":"Rails · Turbo · Stimulus · PostgreSQL","tradeoff":"Rich offline or canvas-heavy interfaces can need a separate client.","practices":["Keep Turbo and Stimulus focused on interface behavior; put authorization in explicit policies.","Run migrations and exercise the generated authentication flow before building product features around it.","Treat Solid Queue workers as operated processes. Make retries safe and verify recovery after interruption.","Use system tests for the critical browser journey and rehearse backups and restore before shipping."]},
"laravel-livewire-postgresql": {"title":"Laravel + Livewire","language":"PHP","group":"Web applications","kind":["web","api"],"ui":"server","host":"server","summary":"PHP product applications with a cohesive UI, auth and queue toolset.","shape":"Laravel · Livewire · Blade · PostgreSQL","tradeoff":"The web process, queue workers and scheduler each need deployment supervision.","practices":["Use policies and gates for permissions; a starter's authentication flow does not supply product authorization.","Preserve the selected starter's test conventions and verify Livewire behavior in a real browser.","Supervise queue workers and schedule execution explicitly. Verify retries and avoid duplicate external effects.","Use Laravel Boost during development with the project's installed documentation; keep production exposure separate."]},
"python-django": {"title":"Django","language":"Python","group":"Web applications","kind":["web","api"],"ui":"server","host":"server","summary":"Data-heavy products with an ORM, forms, accounts and admin.","shape":"Django · PostgreSQL · uv · pytest","tradeoff":"Interactive clients and long-running jobs require their own interface and worker choices.","practices":["Keep Django's auth, session and CSRF protections. Enforce tenant and object permissions in application operations.","Use forms, domain validation and database constraints together; do not rely on one validation layer.","Commit and rehearse migrations against an isolated database; check deployment settings separately from unit tests.","Choose WSGI or ASGI for the actual workload and operate background workers independently."]},
"go-service": {"title":"Go service","language":"Go","group":"APIs & services","kind":["api"],"ui":"none","host":"binary","summary":"HTTP APIs and backend services with a straightforward binary deployment.","shape":"net/http · pgx · sqlc · PostgreSQL","tradeoff":"Product features such as authorization and administration need explicit assembly.","practices":["Propagate contexts and set timeouts on external requests. Bound concurrency and handle shutdown.","Keep SQL and migrations reviewed and generated query code synchronized with the schema.","Test handlers with httptest and persistence against a disposable real PostgreSQL instance.","Use River only when durable jobs are required; test retry-safe effects and worker shutdown."]},
"rust-service": {"title":"Rust service","language":"Rust","group":"APIs & services","kind":["api"],"ui":"none","host":"binary","summary":"Services where runtime control and explicit resource handling matter.","shape":"Axum · Tokio · SQLx · PostgreSQL","tradeoff":"Async runtime and type complexity add development work; measure the reason to choose them.","practices":["Keep blocking work off async executor threads and apply timeouts and concurrency limits.","Use typed configuration and tracing; preserve useful context when returning errors.","Rehearse SQLx migrations and validate prepared query metadata against the intended schema.","Build for the actual deployment target. Type checks do not replace authorization, retry and load tests."]},
"python-fastapi": {"title":"FastAPI","language":"Python","group":"APIs & services","kind":["api"],"ui":"none","host":"server","summary":"Typed Python APIs alongside Python integrations, data or AI libraries.","shape":"FastAPI · Pydantic · SQLAlchemy · Alembic","tradeoff":"Authentication, migrations and durable jobs are separate integration decisions.","practices":["Validate tokens and permissions in dependencies; Pydantic validation does not establish authorization.","Keep blocking calls out of async request handling and configure database connection lifetimes.","Commit and rehearse Alembic migrations. Use isolated databases for integration tests.","Move durable work to operated workers; an in-process background task cannot guarantee recovery."]},
"go-cli": {"title":"Go CLI + TUI","language":"Go","group":"Tools & automation","kind":["cli"],"ui":"terminal","host":"binary","summary":"Command-line applications and terminal interfaces distributed as binaries.","shape":"Cobra · Bubble Tea when needed · GoReleaser","tradeoff":"Test every target platform; interactive terminals and redirected output have different needs.","practices":["Keep command parsing separate from domain operations. Test help, exit codes, stdout and stderr.","Respect cancellation, timeouts and non-interactive input; do not require a TUI for scripting.","Skip persistence for stateless tools. Delegate long-lived work to a service with a durable job ID.","Verify release binaries on each supported OS and architecture, including the required runtime dependencies."]},
"rust-cli": {"title":"Rust CLI + TUI","language":"Rust","group":"Tools & automation","kind":["cli"],"ui":"terminal","host":"binary","summary":"Portable command-line tools with explicit memory and resource control.","shape":"Clap · Ratatui when needed · Cargo","tradeoff":"Cross-compilation and native dependencies still need target-specific qualification.","practices":["Keep parsing separate from domain behavior. Test malformed input, pipes, errors and exit codes.","Use interactive UI only when a terminal is available and the user has requested it.","Bound resource use and retain error context rather than panicking on expected failures.","Build with the committed lockfile and verify each supported release target."]},
"python-scripts-workers": {"title":"Python automation + AI","language":"Python","group":"Tools & automation","kind":["automation"],"ui":"none","host":"server","summary":"Scripts, integrations and workers close to the Python data and AI ecosystem.","shape":"uv · Pydantic · HTTPX / provider SDK · pytest","tradeoff":"Persistent workers need an execution platform; model outputs and tool calls need validation.","practices":["Use scoped credentials, explicit timeouts and bounded concurrency for external calls.","Validate model outputs and tool inputs; keep approval boundaries separate from model reasoning.","Test with deterministic fake services and recorded fixtures, including partial failure and replay.","Use a durable workflow engine only when restart recovery is required; make external effects idempotent."]},
"swift-swiftui-ios": {"title":"Swift + SwiftUI","language":"Swift","group":"Native mobile","kind":["ios"],"ui":"native","host":"native","summary":"Native iPhone and iPad apps using Apple's UI and platform APIs.","shape":"SwiftUI · Swift concurrency · SwiftData · Xcode","tradeoff":"Apple builds and distribution need macOS/Xcode; Android needs its own client.","practices":["Keep presentation state small and actor-isolated; inject service and API boundaries for tests.","Use structured concurrency with cancellation and store credentials in Keychain.","Treat offline storage and synchronization as separate decisions, with explicit conflict handling.","Check Dynamic Type, VoiceOver and real-device behavior; a simulator pass does not establish background or distribution behavior."]},
"kotlin-compose-android": {"title":"Kotlin + Compose","language":"Kotlin","group":"Native mobile","kind":["android"],"ui":"native","host":"native","summary":"Native Android apps with platform UI, lifecycle and storage integration.","shape":"Compose · ViewModel · Room · Coroutines","tradeoff":"Device diversity and background restrictions need Android-specific checks; iOS is a separate client.","practices":["Expose immutable screen state from ViewModels and collect it with lifecycle awareness.","Use lifecycle-owned coroutine scopes. Use WorkManager for eligible persistent, deferrable work.","Test Room migrations and keep credential material protected by platform-backed keys.","Check TalkBack, large text and real devices, then qualify the signed bundle through internal testing."]},
"expo-react-native": {"title":"Expo + React Native","language":"TypeScript","group":"Native mobile","kind":["ios","android"],"ui":"native","host":"native","summary":"A shared React Native project delivering separate iOS and Android applications.","shape":"Expo · React Native · TypeScript · Expo Router","tradeoff":"Native modules, platform behavior, signing and release still need separate iOS and Android verification; the backend remains separately owned.","practices":["Keep SDK-compatible dependencies and the generated lockfile; inspect exact template versions and baseline checks.","Use development builds for custom native dependencies and qualify their SDK and both-platform support.","Keep identity, authorization, data and durable work behind the separately owned backend.","Verify each platform on representative devices, including accessibility, lifecycle, offline behavior and release signing."]}
}