This project was kickstarted with FullProduct.dev's universal app starterkit:
- Feature-first colocation: Routes, resolvers, schemas, screens live together in
features/*/orpackages/*/workspaces instead of being split by frontend/backend. - Zod schemas as single source of truth: Use
schema()from@green-stack/schemas. APIs, types, db models and docs derive from these to stay in sync. - Workspace-defined routes: Define routes in
features/*/routes/. Runnpm run link:routesto re-export to Expo/Next. - Universal UI: Use
View,Text,Imagefrom@app/uiwith Nativewind compatibleclassNameinstead of HTML primitives.
- Project structure
- Routing
- Data resolvers & APIs
- Data fetching
- Schemas & single sources of truth
- Universal styling
- Form management
- Generators
- Workspace drivers
- Env vars + App config
- Automatic docgen
When updating or recreating files, always maintain the same code style and tab spacing of the existing files.
Wherever possible, think of a plan and good feeback loop for the code you'll be writing.
Make the plan extremely conside. Sacrifice grammar for the sake of concision.
At the end of each plan, give me a list of unresolved questions to answer, if any.
A good feedback loop could be a test suite to run red green iterations with, or some of our common dev scripts to run to help test everything still works as expected:
npm run test(runs all tests in the project)npm run build(runs all build scripts in the project)npm run build:schema(builds the GraphQL schema)npm run build:theme-colors(builds the theme colors)npm run collect:resolvers(collects all resolvers in the project)npm run collect:schemas(collects all schemas in the project)npm run collect:drivers(collects all drivers in the project)npm run collect:generators(collects all generators in the project)npm run link:routes(reexports all routes in the project to the Expo/Next app routers)