Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codex-target
4 changes: 0 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,6 @@ jobs:
- name: Install dependencies
run: bun install --frozen-lockfile

- name: Generate Convex code (non-blocking)
continue-on-error: true
run: bunx convex codegen

- name: Lint
run: bun run lint

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

# dependencies
node_modules/
/node_modules.*/

# Expo
.expo
Expand Down
33 changes: 32 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,36 @@
"source.organizeImports.biome": "explicit",
"source.sortMembers": "explicit"
},
"files.exclude": {
"**/node_modules": true,
"**/node_modules.*": true,
"**/.expo": true,
"**/.gradle-user-home": true,
"android/.gradle": true,
"android/build": true,
"android/app/build": true,
"android/app/.cxx": true
},
"search.exclude": {
"**/node_modules": true,
"**/node_modules.*": true,
"**/.expo": true,
"**/.gradle-user-home": true,
"android/.gradle": true,
"android/build": true,
"android/app/build": true,
"android/app/.cxx": true
},
"files.watcherExclude": {
"**/node_modules/**": true,
"**/node_modules.*/**": true,
"**/.expo/**": true,
"**/.gradle-user-home/**": true,
"android/.gradle/**": true,
"android/build/**": true,
"android/app/build/**": true,
"android/app/.cxx/**": true
},
"[javascript]": {
"editor.defaultFormatter": "biomejs.biome"
},
Expand All @@ -19,5 +49,6 @@
},
"[json]": {
"editor.defaultFormatter": "biomejs.biome"
}
},
"git.ignoreLimitWarning": true
}
6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,9 @@ Local workspace additions:
- Prefer the `jcodemunch` MCP server for repository exploration when it is available.
- Use `jcodemunch` for symbol search, file outlines, repo outlines, and targeted code retrieval before falling back to broad file reads.
- Fall back to `rg`, `sed`, and direct file reads when `jcodemunch` is unavailable or when raw file context is clearly more appropriate.
- For UI architecture work, prefer deletion over adaptation when an abstraction is dormant, duplicated, or only partially wired.
- Maintain one primary styling path. Remove inactive Tailwind/NativeWind plumbing rather than preserving “optional” styling systems.
- Maintain one runtime theme source. Do not keep fake appearance modes or duplicate token layers alive for compatibility alone.
- Prefer a small primitive layer (`text`, `icon`, `pressable`, `surface`, `field`, `button`, `list-row`) and compose feature widgets from it.
- Reduce role-based duplication by extracting shared presenters and thin role-specific data containers when possible.
- Remove pass-through screen/layout wrappers unless they enforce a real invariant shared across routes.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@ bun install

## Run

- Full dev stack with Bun:
- `bun run dev`
- Start Expo:
- `bun run start`
- Start Convex with on-the-fly `_generated` updates:
- `bun run convex:dev`
- Android (native Windows emulator flow):
- `bun run android`
- Android doctor:
Expand All @@ -24,4 +28,5 @@ bun install
## Notes

- Android workflow is Windows-first (no WSL requirement).
- Convex updates `convex/_generated` automatically while `bun run convex:dev` is running. Keep `_generated` committed; `bunx convex codegen` is only for explicit regeneration and CI validation.
- See `docs/android-windows-setup.md` for details.
1 change: 1 addition & 0 deletions _hyprdoc_link
2 changes: 1 addition & 1 deletion babel.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module.exports = (api) => {
api.cache(true);
return {
presets: [["babel-preset-expo", { jsxImportSource: "nativewind" }], "nativewind/babel"],
presets: ["babel-preset-expo"],
plugins: ["react-native-reanimated/plugin"],
};
};
113 changes: 6 additions & 107 deletions bun.lock

Large diffs are not rendered by default.

22 changes: 20 additions & 2 deletions convex/_generated/api.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,23 @@
*/

import type * as auth from "../auth.js";
import type * as calendar from "../calendar.js";
import type * as calendarNode from "../calendarNode.js";
import type * as constants from "../constants.js";
import type * as didit from "../didit.js";
import type * as home from "../home.js";
import type * as homeRead from "../homeRead.js";
import type * as http from "../http.js";
import type * as inbox from "../inbox.js";
import type * as instructorZones from "../instructorZones.js";
import type * as integrations_rapyd_client from "../integrations/rapyd/client.js";
import type * as integrations_rapyd_config from "../integrations/rapyd/config.js";
import type * as integrations_rapyd_payloads from "../integrations/rapyd/payloads.js";
import type * as invoicing from "../invoicing.js";
import type * as jobs from "../jobs.js";
import type * as lib_auth from "../lib/auth.js";
import type * as lib_calendarCrypto from "../lib/calendarCrypto.js";
import type * as lib_calendarShared from "../lib/calendarShared.js";
import type * as lib_domainValidation from "../lib/domainValidation.js";
import type * as lib_instructorCoverage from "../lib/instructorCoverage.js";
import type * as lib_instructorEligibility from "../lib/instructorEligibility.js";
Expand All @@ -27,15 +35,16 @@ import type * as notifications from "../notifications.js";
import type * as notificationsCore from "../notificationsCore.js";
import type * as onboarding from "../onboarding.js";
import type * as payments from "../payments.js";
import type * as paymentsRead from "../paymentsRead.js";
import type * as payouts from "../payouts.js";
import type * as rapyd from "../rapyd.js";
import type * as rapydReturnBridge from "../rapydReturnBridge.js";
import type * as resendMagicLink from "../resendMagicLink.js";
import type * as resendOtp from "../resendOtp.js";
import type * as userPushNotifications from "../userPushNotifications.js";
import type * as users from "../users.js";
import type * as webhooks from "../webhooks.js";
import type * as webhookSecurity from "../webhookSecurity.js";
import type * as webhooks from "../webhooks.js";

import type {
ApiFromModules,
Expand All @@ -45,15 +54,23 @@ import type {

declare const fullApi: ApiFromModules<{
auth: typeof auth;
calendar: typeof calendar;
calendarNode: typeof calendarNode;
constants: typeof constants;
didit: typeof didit;
home: typeof home;
homeRead: typeof homeRead;
http: typeof http;
inbox: typeof inbox;
instructorZones: typeof instructorZones;
"integrations/rapyd/client": typeof integrations_rapyd_client;
"integrations/rapyd/config": typeof integrations_rapyd_config;
"integrations/rapyd/payloads": typeof integrations_rapyd_payloads;
invoicing: typeof invoicing;
jobs: typeof jobs;
"lib/auth": typeof lib_auth;
"lib/calendarCrypto": typeof lib_calendarCrypto;
"lib/calendarShared": typeof lib_calendarShared;
"lib/domainValidation": typeof lib_domainValidation;
"lib/instructorCoverage": typeof lib_instructorCoverage;
"lib/instructorEligibility": typeof lib_instructorEligibility;
Expand All @@ -63,15 +80,16 @@ declare const fullApi: ApiFromModules<{
notificationsCore: typeof notificationsCore;
onboarding: typeof onboarding;
payments: typeof payments;
paymentsRead: typeof paymentsRead;
payouts: typeof payouts;
rapyd: typeof rapyd;
rapydReturnBridge: typeof rapydReturnBridge;
resendMagicLink: typeof resendMagicLink;
resendOtp: typeof resendOtp;
userPushNotifications: typeof userPushNotifications;
users: typeof users;
webhooks: typeof webhooks;
webhookSecurity: typeof webhookSecurity;
webhooks: typeof webhooks;
}>;

/**
Expand Down
Loading