Skip to content

Commit 5723aa5

Browse files
init commit
0 parents  commit 5723aa5

File tree

188 files changed

+29569
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

188 files changed

+29569
-0
lines changed

.bolt/config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"template": "bolt-expo"
3+
}

.bolt/prompt

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
For all designs, create beautiful, production-ready interfaces. Avoid cookie-cutter solutions and aim for fully featured screens.
2+
3+
Tech Stack:
4+
- @tanstack/react-query for data fetching/caching
5+
- react-hook-form
6+
- Custom UI components
7+
- Absolute imports with @ alias
8+
9+
Existing placeholder code:
10+
- /app has example pages. Use them as a reference. Remove the pages the app does not need
11+
- /data has an example for a flowers module. NOTE: you should use Supabase for your implementation instead of a REST client
12+
13+
Docs:
14+
- **ALWAYS read these docs before starting:**
15+
- /docs/code/auth.md
16+
- /docs/code/folder-structure.md
17+
- /docs/code/routing.md
18+
- Follow patterns described in the docs
19+
20+
Data Layer (`/data`):
21+
```
22+
data/posts/
23+
├── posts.queries.ts // PostsQueries namespace (React Query + Supabase)
24+
└── posts.models.ts // PostsModels namespace (Zod schemas)
25+
```
26+
27+
Always include auth logic in the data folder (login, register)
28+
29+
**CRITICAL:** NEVER use Supabase directly in components - ALL data fetching/mutations MUST go through `*.queries.ts` files
30+
31+
Naming: camelCase folders (`userProfiles/`), PascalCase namespaces (`UserProfilesModels`, `UserProfilesQueries`)
32+
33+
Database Setup:
34+
1. Create tables/schema
35+
2. Add dummy/seed data (enough to demonstrate UI)
36+
3. Use camelCase for all entity properties
37+
38+
Data Hooks:
39+
1. Define Zod schemas in `*.models.ts`, export as namespace
40+
2. Create React Query hooks in `*.queries.ts` wrapping Supabase, export as namespace
41+
3. Invalidate cache after mutations
42+
4. Use Supabase joins for nested data displayed together
43+
44+
API Design:
45+
- Nest related entities when displayed together
46+
- Focus on UI needs, not database structure
47+
- Use single queries with joins over multiple separate queries
48+
49+
Forms:
50+
- Use react-hook-form for all forms
51+
- Use zodResolver and pass in the Zod schemas defined in the data layer
52+
53+
OpenAPI: Check `rules/openapi-rules.md` when generating/updating specs
54+
55+
UI:
56+
- Use components from /components wherever possible. Check the entire components folder for a list of available components
57+
- Check /types/index.ts and component files to see what props the components expect
58+
- Check the corresponding .stories files for usage examples of components
59+
60+
**ALWAYS** run "ts:check" to confirm your changes before building and finishing. This check MUST ALWAYS PASS before you finish.

.editorconfig

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
root = true
2+
3+
[*]
4+
ij_html_space_inside_empty_tag = true
5+
end_of_line = lf
6+
insert_final_newline = true
7+
charset = utf-8
8+
indent_style = space
9+
indent_size = 2
10+
trim_trailing_whitespace = true
11+
max_line_length = 120
12+
13+
# quote style
14+
ij_javascript_force_quote_style = true
15+
ij_typescript_force_quote_style = true
16+
ij_javascript_use_double_quotes = false
17+
ij_typescript_use_double_quotes = false
18+
19+
# bracket spacing
20+
ij_javascript_spaces_within_object_literal_braces = true
21+
ij_typescript_spaces_within_object_literal_braces = true
22+
ij_javascript_spaces_within_object_type_braces = true
23+
ij_typescript_spaces_within_object_type_braces = true
24+
25+
# imports
26+
ij_javascript_spaces_within_imports = true
27+
ij_typescript_spaces_within_imports = true
28+
ij_javascript_import_merge_members = true
29+
ij_typescript_import_merge_members = true
30+
ij_javascript_import_sort_members = true
31+
ij_typescript_import_sort_members = true

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
EXPO_PUBLIC_API_URL=

.eslintignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
/.expo
3+
node_modules
4+
.storybook/storybook.requires.ts

.eslintrc.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = {
2+
root: true,
3+
extends: ["universe/native"],
4+
rules: {
5+
"@typescript-eslint/consistent-type-imports": [
6+
"error",
7+
{
8+
prefer: "type-imports",
9+
fixStyle: "inline-type-imports",
10+
},
11+
],
12+
},
13+
};

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.pbxproj -text
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Build and Submit production
2+
3+
on:
4+
push:
5+
tags:
6+
- "*"
7+
8+
jobs:
9+
eas-build:
10+
name: "Build and Submit"
11+
uses: ./.github/workflows/eas-build.yml
12+
with:
13+
profile: production
14+
auto-submit: true
15+
secrets:
16+
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Build and Submit staging
2+
3+
on:
4+
push:
5+
branches:
6+
- "main"
7+
8+
jobs:
9+
eas-build:
10+
name: "Build and Submit"
11+
uses: ./.github/workflows/eas-build.yml
12+
with:
13+
profile: staging
14+
auto-submit: true
15+
secrets:
16+
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}

.github/workflows/code-quality.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Code Quality
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
types: [opened, synchronize, reopened]
8+
9+
jobs:
10+
lint-format-test:
11+
name: Lint, format, test
12+
runs-on: ubuntu-latest
13+
# Let the job post results back to the PR (Sonar, test checks, …)
14+
permissions:
15+
contents: read
16+
pull-requests: write
17+
18+
steps:
19+
# 1️⃣ Pull the source
20+
- uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 0
23+
24+
# 3️⃣ Set up Node + cache PNPM store
25+
- uses: actions/setup-node@v4
26+
with:
27+
node-version: 24
28+
cache: yarn
29+
30+
# 4️⃣ Install deps (cache hit makes this fast)
31+
- name: Install deps
32+
run: yarn install --frozen-lockfile
33+
34+
# 5️⃣ Lint & Format
35+
- name: Lint & Format
36+
run: yarn lint && yarn format
37+
38+
# 6️⃣ Type‑check
39+
- name: Typecheck
40+
run: yarn ts:check
41+
42+
# 7️⃣ Unit tests (creates coverage/lcov.info)
43+
- name: Test
44+
run: yarn test

0 commit comments

Comments
 (0)