Skip to content

Conversation

@Michael-cmd-sys
Copy link
Collaborator

@Michael-cmd-sys Michael-cmd-sys commented Sep 9, 2025

Work on README and contributing files as well as some minor changes to files to help the onboarding process a bit easier

Summary by CodeRabbit

  • Documentation

    • Overhauled README with Finance.io branding, expanded onboarding, setup, build steps, project structure, tech stack, troubleshooting, design resources, contributing, and changelog.
  • Chores

    • Updated app configuration and routing metadata and set a default for an auth key.
    • Added .gitignore rules for IDE/project artifacts and migrations.
    • Added developer database scripts and a public database export for local workflows.
    • Minor development-only logging and comment cleanup.

Copilot AI review requested due to automatic review settings September 9, 2025 15:17
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 9, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Repository updates: added .gitignore entries, major README replacement, adjusted app.json extras, exported a Drizzle DB instance, added dev-only console.log in app layout, fixed a comment in a Button component, and added package scripts + pnpm dependency.

Changes

Cohort / File(s) Summary of edits
Repository config
.gitignore, package.json, app.json
.gitignore: added migration/IDE/project ignore rules (drizzle/, .idea/, .vscode/, .qodo/, .crush/) and a comment. package.json: added db:generate and db:push scripts and pnpm dependency. app.json: set expo.extra.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY.default to "", changed expo.extra.eas.projectId, and added expo.extra.router.
Documentation
README.md
Replaced minimal README with an expanded multi-section document covering onboarding, quick start, native build setup, project structure, tech stack, troubleshooting, contributing, and changelog.
App layout
src/app/_layout.tsx
Added a dev-only console.log that prints the Clerk publishable key (guarded by __DEV__); no API/signature changes.
Database
src/db/index.ts
New export: initialized Drizzle instance: export const db = drizzle({ client: sql }); (added export and slight formatting).
UI component
src/components/ui/button.tsx
Typo fix in a comment ("didn't get it working"); no functional change.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Browser as Browser / App
  participant Layout as src/app/_layout.tsx
  participant Env as Env (process/expo)
  participant DBModule as src/db/index.ts
  note right of Layout #D6EAF8: Dev-only logging added
  Browser->>Layout: Load Root Layout
  Layout->>Env: Read EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY
  alt __DEV__ true
    Layout->>Layout: console.log(publishableKey)
  end
  Browser->>DBModule: Import DB
  DBModule->>DBModule: drizzle({ client: sql }) -> export db
  DBModule-->>Browser: exported db instance
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Feat/auth #16 — Overlapping changes that add/export db in src/db and also modify src/app/_layout.tsx.
  • Created Homepage #4 — Also modifies src/app/_layout.tsx (RootLayout/Stack changes).

Suggested reviewers

  • FleetAdmiralJakob
  • murtazanoori

Poem

I twitch my ears at config’s tune,
Docs sprout bright beneath the moon.
A drizzle DB, a dev-key song,
A tiny comment fixed, not long.
Hop, commit — the repo hums along! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Title Check ⚠️ Warning The title enumerates multiple specific file changes rather than focusing on a single primary improvement and is longer than necessary; it lists .gitignore updates, CONTRIBUTING, and README changes instead of concisely summarizing the overarching purpose of the PR. Please shorten and simplify the title to capture the main intent of the PR, for example “chore: update documentation and gitignore rules,” so it remains concise and focused.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f334ebc and 1edf01c.

📒 Files selected for processing (2)
  • README.md (1 hunks)
  • app.json (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • app.json
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-24T14:28:33.803Z
Learnt from: CR
PR: The-Creative-Programming-Group/finance-io#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-24T14:28:33.803Z
Learning: Always run pnpm format:write before committing and fix lint errors with pnpm lint

Applied to files:

  • README.md
📚 Learning: 2025-09-21T09:54:31.802Z
Learnt from: FleetAdmiralJakob
PR: The-Creative-Programming-Group/finance-io#45
File: README.md:1-0
Timestamp: 2025-09-21T09:54:31.802Z
Learning: When prettier-plugin-tailwindcss errors occur, check if the issue is using npx prettier (global) vs locally installed prettier via package manager scripts, even when the plugin is properly installed in devDependencies.

Applied to files:

  • README.md
📚 Learning: 2025-08-04T14:03:33.286Z
Learnt from: murtazanoori
PR: The-Creative-Programming-Group/finance-io#33
File: localization/en.json:33-33
Timestamp: 2025-08-04T14:03:33.286Z
Learning: In the Finance.io app localization files, references to "Weather.io" in descriptions are intentional as they are related apps from the same organization, and should not be flagged as incorrect app references.

Applied to files:

  • README.md
🪛 markdownlint-cli2 (0.18.1)
README.md

100-100: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (3)
README.md (3)

23-82: Replace Expo Go onboarding with the Expo Prebuild flow

The maintainers already asked that we stop steering contributors toward Expo Go for this project. Keeping Step 1 (and the QR-code note) centered on Expo Go directly contradicts that guidance and will send new contributors down the wrong path. Please drop the Expo Go onboarding here and instead document the supported Expo Prebuild/EAS workflow (e.g., prerequisites, pnpm expo prebuild, running native binaries, linking to the Expo docs that were shared).

-### 1. Install Expo Go
-
-Download Expo Go from the [Google Play Store](https://play.google.com/store/apps/details?id=host.exp.exponent) or [Apple App Store](https://apps.apple.com/app/expo-go/id982107779).
+### 1. Install native build prerequisites
+
+- Install the Android/iOS tooling listed in the [Expo Prebuild setup guide](https://docs.expo.dev/get-started/set-up-your-environment/).
+- Make sure the Expo CLI and EAS CLI are available (`pnpm dlx expo@latest --version`, `pnpm dlx eas-cli --version`).
...
-- Scan the QR code with Expo Go to launch the app on your device.
+- Use `pnpm expo run:android` / `pnpm expo run:ios` (or EAS build) to load the project on a device or simulator.

42-79: Keep dependency & runtime commands pnpm-only (and fix incorrect examples)

Two problems here: (1) the repo owners already asked that we only document pnpm commands for consistency, yet we still list npm/yarn flows; (2) the “With npm” section shows pnpm install / pnpm android, which is flat-out wrong and will break onboarding. Please remove the npm/yarn subsections and reinforce pnpm as the single path.

-With **pnpm**:
-
-```bash
-pnpm install
-```
-
-With **npm**:
-
-```bash
-pnpm install
-```
-
-With **yarn**:
-
-```bash
-yarn install
-```
+Install dependencies with pnpm:
+
+```bash
+pnpm install
+```
...
-With **pnpm**:
-
-```bash
-pnpm start
-```
-
-With **npm**:
-
-```bash
-pnpm android # for Android
-# or
-pnpm ios     # for iOS
-```
-
-With **yarn**:
-
-```bash
-yarn start
-```
+Start the development server with pnpm:
+
+```bash
+pnpm start
+```
+
+Native targets:
+
+```bash
+pnpm expo run:android  # Android
+pnpm expo run:ios      # iOS
+```

5-7: Normalize the product name to “Finance.io”

We still have “Finance-IO” in the intro and Figma link text even though the maintainers explicitly asked for the Finance.io branding everywhere. Please update these occurrences to stay consistent with the rest of the docs.

-Finance.io is a modern personal finance management app designed to help you track, analyze, and optimize your finances across Android, iOS, and web. With a simple interface and powerful features, Finance-IO makes budgeting, expense tracking, and financial planning accessible to everyone.
+Finance.io is a modern personal finance management app designed to help you track, analyze, and optimize your finances across Android, iOS, and web. With a simple interface and powerful features, Finance.io makes budgeting, expense tracking, and financial planning accessible to everyone.
...
-All UI development follows our official Figma design: [Finance-IO Figma UI](https://www.figma.com/design/JQFXBsYUqEdSLD3OQUwp1H/Native-Finance-App---Finance.io?node-id=0-1&p=f&t=SOgQXPopZ1yAeuZK-0)
+All UI development follows our official Figma design: [Finance.io Figma UI](https://www.figma.com/design/JQFXBsYUqEdSLD3OQUwp1H/Native-Finance-App---Finance.io?node-id=0-1&p=f&t=SOgQXPopZ1yAeuZK-0)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR focuses on improving developer onboarding and documentation for the Finance-IO mobile app. The changes include comprehensive README and CONTRIBUTING documentation, minor code formatting improvements, and configuration updates to support the development workflow.

  • Complete rewrite of README.md with detailed setup instructions, troubleshooting, and project structure
  • Addition of comprehensive CONTRIBUTING.md file with development guidelines and environment setup
  • Minor code formatting and comment corrections across several files

Reviewed Changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
README.md Complete rewrite with comprehensive project documentation, setup instructions, and troubleshooting
CONTRIBUTING.md New comprehensive contributing guide with development setup, coding standards, and workflow
src/db/index.ts Added blank line for code formatting
src/components/ui/button.tsx Fixed grammar in comment (didnt → didn't)
src/components/TRPCProvider.tsx Typo in comment (simulator → simulatorn)
src/app/_layout.tsx Added console.log for debugging Clerk key
app.json Updated project configuration with new owner and project ID

Michael-cmd-sys and others added 4 commits September 9, 2025 15:21
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/db/index.ts (1)

7-7: Likely wrong drizzle init for neon-http.

For drizzle-orm/neon-http the common signature is drizzle(sql), not drizzle({ client: sql }). Using the object form can fail at runtime.

Apply:

-export const db = drizzle({ client: sql });
+export const db = drizzle(sql);
🧹 Nitpick comments (7)
src/components/TRPCProvider.tsx (2)

27-27: Nit: fix comment typo.

“iOS simulatorn” → “iOS simulator”.

-          ? "http://localhost:8081" // iOS simulatorn
+          ? "http://localhost:8081" // iOS simulator

34-45: Place superjson transformer at client level (httpBatchLink ignores it).

Move transformer to trpc.createClient; remove from httpBatchLink options to ensure proper (de)serialization.

-    return trpc.createClient({
-      links: [
-        httpBatchLink({
-          url: `${baseUrl}/api/trpc`,
-          transformer: superjson,
+    return trpc.createClient({
+      transformer: superjson,
+      links: [
+        httpBatchLink({
+          url: `${baseUrl}/api/trpc`,
           async headers() {
             const token = await getToken();
             return token ? { Authorization: `Bearer ${token}` } : {};
           },
         }),
       ],
     });
README.md (2)

12-12: Nit: iOS capitalization.

-- **Multi-platform support:** Use Finance-IO on Android, IOS, and web.
+- **Multi-platform support:** Use Finance-IO on Android, iOS, and web.

99-99: Add language to fenced block (markdownlint MD040).

-```
+```text
src/app/_layout.tsx (1)

42-42: Avoid logging keys in release builds; gate under DEV.

-console.log("Clerk publishable key: ", publishableKey);
+if (__DEV__) console.log("Clerk publishable key:", publishableKey);
CONTRIBUTING.md (2)

108-109: Fix broken paragraph/numbering.

“locally.3.” indicates a missing newline; make “3. Environment Variables” a new step.

-   > **Note:** The `drizzle/` directory is gitignored. Each team member should run `pnpm db:generate` to create their own database migration files locally.3. **Environment Variables**
+   > **Note:** The `drizzle/` directory is gitignored. Each team member should run `pnpm db:generate` to create their own database migration files locally.
+
+3. **Environment Variables**

143-145: Fix missing newline before “Available Scripts”.

-   - The connection string will look like: `postgresql://username:password@hostname/database?sslmode=require`### Available Scripts
+   - The connection string will look like: `postgresql://username:password@hostname/database?sslmode=require`
+
+### Available Scripts
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a1ba479 and cb91a24.

📒 Files selected for processing (8)
  • .gitignore (1 hunks)
  • CONTRIBUTING.md (1 hunks)
  • README.md (1 hunks)
  • app.json (2 hunks)
  • src/app/_layout.tsx (1 hunks)
  • src/components/TRPCProvider.tsx (1 hunks)
  • src/components/ui/button.tsx (1 hunks)
  • src/db/index.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
src/**/*.tsx

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.tsx: Use instead of from react-native in UI components
All styling should use TailwindCSS classes via NativeWind (avoid inline StyleSheet definitions)

Files:

  • src/components/TRPCProvider.tsx
  • src/components/ui/button.tsx
  • src/app/_layout.tsx
src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Follow TypeScript strict mode requirements across the codebase

Files:

  • src/components/TRPCProvider.tsx
  • src/db/index.ts
  • src/components/ui/button.tsx
  • src/app/_layout.tsx
src/{server,db}/**/*.ts

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Database operations must use Drizzle ORM queries (no raw SQL/ad-hoc clients)

Files:

  • src/db/index.ts
src/app/**/*.tsx

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use Expo Router file-based routing; screens and routes live under src/app/

Files:

  • src/app/_layout.tsx
src/app/_layout.tsx

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Keep the root layout and providers in src/app/_layout.tsx

Files:

  • src/app/_layout.tsx
🧠 Learnings (2)
📚 Learning: 2025-08-24T14:28:33.804Z
Learnt from: CR
PR: The-Creative-Programming-Group/finance-io#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-24T14:28:33.804Z
Learning: Applies to src/{server,db}/**/*.ts : Database operations must use Drizzle ORM queries (no raw SQL/ad-hoc clients)

Applied to files:

  • src/db/index.ts
  • .gitignore
📚 Learning: 2025-08-24T14:28:33.804Z
Learnt from: CR
PR: The-Creative-Programming-Group/finance-io#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-24T14:28:33.804Z
Learning: Applies to .env.local : Create and maintain .env.local with required variables (EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY, DATABASE_URL, EXPO_PUBLIC_API_URL)

Applied to files:

  • src/app/_layout.tsx
🧬 Code graph analysis (1)
src/db/index.ts (1)
src/index.ts (1)
  • main (4-16)
🪛 GitHub Actions: Expo EAS Build
CONTRIBUTING.md

[warning] 1-1: Prettier formatting issues found in CONTRIBUTING.md. Run 'npx prettier --write' to fix.

app.json

[warning] 1-1: Prettier formatting issues found in app.json. Run 'npx prettier --write' to fix.

README.md

[warning] 1-1: Prettier formatting issues found in README.md. Run 'npx prettier --write' to fix.

🪛 markdownlint-cli2 (0.17.2)
README.md

99-99: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (5)
src/components/ui/button.tsx (1)

73-73: Comment typo fix — LGTM.

src/db/index.ts (1)

1-8: Initialization signature correct. Usage of drizzle({ client: sql }) aligns with official Neon + Drizzle examples for v0.43.x; no other object-style drizzle calls found (neon.tech, neon.com)

.gitignore (1)

47-51: IDE/project files ignore — LGTM.

app.json (1)

1-74: Prettier formatting: Run npx prettier --write app.json (after installing dependencies) to fix app.json formatting and satisfy CI.

CONTRIBUTING.md (1)

1-312: Run project formatter via pnpm
Install dev dependencies (including prettier-plugin-tailwindcss) and reformat the docs:

pnpm install  
pnpm format

Comment on lines +39 to +41
# database migrations (team members should generate their own)
drizzle/

Copy link
Contributor

@coderabbitai coderabbitai bot Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider committing Drizzle migrations for reproducible deploys.

Ignoring the entire drizzle/ directory makes schema history ephemeral and can break CI/CD. Prefer committing SQL migrations (and the journal) while ignoring generated extras.

-# database migrations (team members should generate their own)
-drizzle/
+# Drizzle migrations (commit SQL + journal; ignore other artifacts)
+drizzle/*
+!drizzle/*.sql
+!drizzle/meta/
+drizzle/meta/*
+!drizzle/meta/_journal.json

Would you like me to adjust CONTRIBUTING.md accordingly?

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# database migrations (team members should generate their own)
drizzle/
# Drizzle migrations (commit SQL + journal; ignore other artifacts)
drizzle/*
!drizzle/*.sql
!drizzle/meta/
drizzle/meta/*
!drizzle/meta/_journal.json
🤖 Prompt for AI Agents
In .gitignore around lines 39 to 41, the entire "drizzle/" directory is ignored
which prevents committing SQL migrations and the migration journal required for
reproducible deploys; remove or modify this rule so that checked-in migration
files and the journal (e.g., SQL migration files and the migrations/journal
file) are tracked while still ignoring only generated artifacts (update the
ignore pattern to exclude generated files but allow committed migrations),
commit the existing migration SQL and journal to the repo, and add a short note
to CONTRIBUTING.md describing the workflow for creating, committing, and testing
Drizzle migrations.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

README.md Outdated
Comment on lines 1 to 3
<!-- Banner Image -->

This is an [Expo](https://expo.dev) project created with [`create-expo-app`](https://www.npmjs.com/package/create-expo-app).
# Finance-IO
Copy link
Contributor

@coderabbitai coderabbitai bot Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

❓ Verification inconclusive

Fix formatting warnings.

Prettier flagged README.md; run formatter to keep CI green.


🏁 Script executed:

#!/bin/bash
set -euo pipefail
npx prettier --write README.md
npx markdownlint-cli2 --config .markdownlint.jsonc README.md || true

Length of output: 186


Install missing Prettier plugin
Prettier is erroring on the missing prettier-plugin-tailwindcss. Add it to devDependencies (e.g. pnpm add -D prettier-plugin-tailwindcss) or remove its reference from your Prettier config, then run the formatter (e.g. pnpm format:write or npx prettier --write README.md) to keep CI green.

🧰 Tools
🪛 GitHub Actions: Expo EAS Build

[warning] 1-1: Prettier formatting issues found in README.md. Run 'npx prettier --write' to fix.

🤖 Prompt for AI Agents
In README.md around lines 1 to 3, Prettier is failing due to a missing
prettier-plugin-tailwindcss; either add the plugin to devDependencies (e.g.,
pnpm add -D prettier-plugin-tailwindcss or npm/yarn equivalent) or remove its
reference from your Prettier config, then run the formatter (pnpm format:write
or npx prettier --write README.md) to update formatting and keep CI green.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont think that is true. I think the plugin is already installed but proof me wrong.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if prettier-plugin-tailwindcss is in package.json dependencies
echo "=== Checking package.json for prettier-plugin-tailwindcss ==="
if [ -f "package.json" ]; then
    cat package.json | jq -r '.dependencies, .devDependencies' | grep -i tailwind || echo "No tailwind-related dependencies found in package.json"
else
    echo "package.json not found"
fi

echo ""
echo "=== Checking for Prettier configuration files ==="
# Check for Prettier config files
for config in .prettierrc .prettierrc.json .prettierrc.js .prettierrc.yml .prettierrc.yaml prettier.config.js prettier.config.mjs; do
    if [ -f "$config" ]; then
        echo "Found Prettier config: $config"
        cat "$config"
        echo ""
    fi
done

# Check package.json for prettier config
if [ -f "package.json" ]; then
    echo "=== Checking package.json for prettier config ==="
    cat package.json | jq -r '.prettier // empty' 2>/dev/null || echo "No prettier config in package.json"
fi

echo ""
echo "=== Attempting to run Prettier on README.md ==="
# Try to run prettier to see the actual error
npx prettier --check README.md 2>&1 || echo "Prettier check completed with above output"

Length of output: 684


@FleetAdmiralJakob You're absolutely right, and I apologize for the incorrect assessment. The evidence shows that:

prettier-plugin-tailwindcss is installed in devDependencies (version 0.6.11)
.prettierrc correctly references the plugin

The actual issue is different: when running npx prettier directly, it uses a global Prettier version (3.6.2) that can't find the locally installed plugin in node_modules.

The solution is to use the project's package manager scripts instead:

  • pnpm format:write (if that script exists)
  • or pnpm prettier --write README.md
  • or yarn/npm run format (depending on your setup)

This will use the locally installed Prettier that can properly access the tailwindcss plugin. Thank you for challenging my initial analysis - you were correct that the plugin was already installed.


✏️ Learnings added
Learnt from: FleetAdmiralJakob
PR: The-Creative-Programming-Group/finance-io#45
File: README.md:1-0
Timestamp: 2025-09-21T09:54:31.778Z
Learning: When prettier-plugin-tailwindcss errors occur, check if the issue is using npx prettier (global) vs locally installed prettier via package manager scripts, even when the plugin is properly installed in devDependencies.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
README.md (1)

1-3: Fix Prettier/markdown formatting CI warning (plugin missing).

Same as the earlier review: install prettier-plugin-tailwindcss or remove its reference, then run the formatter.

Commands:

  • pnpm: pnpm add -D prettier prettier-plugin-tailwindcss && pnpm format:write
  • npm: npm i -D prettier prettier-plugin-tailwindcss && npx prettier --write README.md
🧹 Nitpick comments (6)
README.md (3)

11-11: Typo fixes: “iOS” and “Tailwind CSS”.

  • iOS is capitalized “iOS”, not “IOS”.
  • Prefer “Tailwind CSS” spelling.

Apply:

- - **Multi-platform support:** Use Finance-IO on Android, IOS, and web.
+ - **Multi-platform support:** Use Finance-IO on Android, iOS, and web.

- - **Fast and responsive:** Built with Expo, React Native, and TailwindCSS for a smooth experience.
+ - **Fast and responsive:** Built with Expo, React Native, and Tailwind CSS for a smooth experience.

Also applies to: 19-19


54-58: List required env vars explicitly.

Spell out which vars must be set so new contributors don’t guess.

 ### 3. Set Up Environment Variables
 - Copy `.env.example` to `.env.local`.
-- Fill in the required values (see comments in `.env.example` for details).
+- Fill in the required values (see comments in `.env.example` for details). Required:
+  - `EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY` (public; needed to boot auth flows)
+  - `DATABASE_URL` (for Drizzle)
+  - `EXPO_PUBLIC_API_URL` (client base URL)

112-127: Reconsider ignoring the entire drizzle/ directory.

Migrations are typically committed; ignoring them breaks reproducible deploys/CI. If you only want to ignore generated artifacts, keep SQL migrations tracked and ignore local state.

 - **drizzle/**: Database migrations.
+ - **drizzle/**: Database migrations.
+   - Note: Commit migration files so CI/prod can apply them. Consider ignoring local artifacts only (e.g., `drizzle/meta/*`, `*.sqlite`), not the whole folder.

Suggested .gitignore patterns (repo root):

# Drizzle local artifacts (keep SQL migrations tracked)
drizzle/meta/
*.sqlite
app.json (3)

60-63: Defaulting Clerk key to empty string: ensure guard at runtime.

Empty string prevents type issues, but passing it into Clerk will throw. Ensure consumers check for truthy value before initializing.

Optional for clarity:

-        "default": "",
+        "default": null,

…and handle null accordingly (e.g., show setup screen or no-op in dev).


64-64: extra.router is empty.

If unused, drop it to reduce noise or document intended keys (e.g., origin, unmatchedRoutes).


65-70: Owner and EAS project binding: verify account alignment and fork UX.

Changing owner and eas.projectId ties builds/updates to that Expo account. Confirm this matches your org’s publishing model; forks may fail EAS flows.

Suggestions:

  • Keep owner on the org account if that’s the shared publisher.
  • Document “how to build on a fork” (e.g., override via EXPO_OWNER and per-developer EAS project).
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cb91a24 and c95b001.

📒 Files selected for processing (4)
  • CONTRIBUTING.md (1 hunks)
  • README.md (1 hunks)
  • app.json (1 hunks)
  • src/app/_layout.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/app/_layout.tsx
  • CONTRIBUTING.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-24T14:28:33.804Z
Learnt from: CR
PR: The-Creative-Programming-Group/finance-io#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-24T14:28:33.804Z
Learning: Applies to .env.local : Create and maintain .env.local with required variables (EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY, DATABASE_URL, EXPO_PUBLIC_API_URL)

Applied to files:

  • app.json

@graphite-app
Copy link

graphite-app bot commented Sep 9, 2025

How to use the Graphite Merge Queue

Add the label merge-queue to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

Comment on lines +23 to +25
### 1. Install Expo Go

- [development build](https://docs.expo.dev/develop/development-builds/introduction/)
- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)
- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)
- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo
Download Expo Go from the [Google Play Store](https://play.google.com/store/apps/details?id=host.exp.exponent) or [Apple App Store](https://apps.apple.com/app/expo-go/id982107779).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't embrace Expo Go anymore. I think everyone should use Expo Prebuild. Expo Go is only for sandboxing and quick testing not for production apps! Screenshot_20250909-180941.png

https://docs.expo.dev/get-started/set-up-your-environment/

Screenshot_20250909-181113.png

https://docs.expo.dev/workflow/overview/#expo-go-an-optional-tool-for-learning

@The-Creative-Programming-Group The-Creative-Programming-Group locked and limited conversation to collaborators Sep 11, 2025
@The-Creative-Programming-Group The-Creative-Programming-Group unlocked this conversation Sep 11, 2025
@Michael-cmd-sys
Copy link
Collaborator Author

Sorry, a lot of things happened within this week will resolve and republish the changes

@FleetAdmiralJakob
Copy link
Member

Sorry, a lot of things happened within this week will resolve and republish the changes

@Michael-cmd-sys Alright, thank you dude

README.md Outdated

## 🎨 Design & UI Resources

All UI development should follow the official Figma design for Finance-IO.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change all to Finance.io

@FleetAdmiralJakob
Copy link
Member

FleetAdmiralJakob commented Sep 22, 2025

Sorry, a lot of things happened within this week will resolve and republish the changes

@Michael-cmd-sys Till when do you think you can resolve all of these comments?

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
README.md (1)

98-113: Add a language hint to the project-structure code block.

Markdownlint flagged this fence for missing a language. Adding something like ```text keeps lint and formatting happy.

-```
+```text
 src/
    app/
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c95b001 and f334ebc.

📒 Files selected for processing (2)
  • README.md (1 hunks)
  • package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-24T14:28:33.803Z
Learnt from: CR
PR: The-Creative-Programming-Group/finance-io#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-08-24T14:28:33.803Z
Learning: Always run pnpm format:write before committing and fix lint errors with pnpm lint

Applied to files:

  • README.md
📚 Learning: 2025-09-21T09:54:31.802Z
Learnt from: FleetAdmiralJakob
PR: The-Creative-Programming-Group/finance-io#45
File: README.md:1-0
Timestamp: 2025-09-21T09:54:31.802Z
Learning: When prettier-plugin-tailwindcss errors occur, check if the issue is using npx prettier (global) vs locally installed prettier via package manager scripts, even when the plugin is properly installed in devDependencies.

Applied to files:

  • README.md
📚 Learning: 2025-08-04T14:03:33.286Z
Learnt from: murtazanoori
PR: The-Creative-Programming-Group/finance-io#33
File: localization/en.json:33-33
Timestamp: 2025-08-04T14:03:33.286Z
Learning: In the Finance.io app localization files, references to "Weather.io" in descriptions are intentional as they are related apps from the same organization, and should not be flagged as incorrect app references.

Applied to files:

  • README.md
🪛 markdownlint-cli2 (0.18.1)
README.md

98-98: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 GitHub Actions: Expo EAS Build
package.json

[error] 1-1: pnpm install --frozen-lockfile failed: lockfile is out of date. Specifiers in pnpm-lock.yaml do not match package.json; 1 dependencies were added: pnpm@^10.12.4. Run 'pnpm install' without --frozen-lockfile to update the lockfile.

🔇 Additional comments (1)
README.md (1)

37-78: Align install/start instructions with pnpm-only policy.

Maintainers have already asked us to standardize on pnpm to avoid environment drift. Reintroducing npm/yarn flows here contradicts that guidance and will send newcomers down unsupported paths. Please update this section to reference pnpm only (e.g., note that pnpm is required, point to pnpm install, pnpm start, etc.). Based on project guidance from FleetAdmiralJakob.

Comment on lines +14 to +15
"db:generate": "db:generate",
"db:push": "db:push",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Fix non-functional db scripts.

Running pnpm db:generate will recurse into itself because the script invokes a non-existent db:generate binary. The same applies to db:push. Please wire these scripts to the actual Drizzle CLI commands so the new onboarding flow works.

-    "db:generate": "db:generate",
-    "db:push": "db:push",
+    "db:generate": "drizzle-kit generate",
+    "db:push": "drizzle-kit push",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"db:generate": "db:generate",
"db:push": "db:push",
"db:generate": "drizzle-kit generate",
"db:push": "drizzle-kit push",
🤖 Prompt for AI Agents
In package.json around lines 14-15, the "db:generate" and "db:push" scripts
currently point to themselves causing recursion; update them to call the actual
Drizzle CLI binaries (e.g. "drizzle-kit generate" for schema generation and
"drizzle-kit push" for applying migrations) so they invoke the installed
drizzle-kit package instead of recursing; ensure any required flags or adapters
used in your project (like --config, --out, or adapter-specific subcommands) are
included as appropriate.

"lucide-react": "^0.511.0",
"lucide-react-native": "^0.509.0",
"nativewind": "^4.1.23",
"pnpm": "^10.12.4",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Remove pnpm from runtime dependencies.

Adding the pnpm CLI to "dependencies" bloats the production bundle and isn’t needed at runtime. It’s already locked via the "packageManager" field. Please drop this entry (or move it to devDependencies only if you have a specific tooling use case).

-    "pnpm": "^10.12.4",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"pnpm": "^10.12.4",
🤖 Prompt for AI Agents
In package.json around line 62, the pnpm CLI is incorrectly listed in
"dependencies" which bloats runtime installs; remove the "pnpm" entry from
"dependencies" (or move it to "devDependencies" if you need it for local
tooling) and run npm/yarn/pnpm install to update lockfile and verify
packageManager still declares the pnpm version.

Comment on lines 23 to 80
### 1. Install Expo Go

- [development build](https://docs.expo.dev/develop/development-builds/introduction/)
- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)
- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)
- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo
Download Expo Go from the [Google Play Store](https://play.google.com/store/apps/details?id=host.exp.exponent) or [Apple App Store](https://apps.apple.com/app/expo-go/id982107779).

You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction).
### 2. Clone the Repository

## Learn more
```bash
git clone https://github.com/The-Creative-Programming-Group/finance-io.git
cd finance-io
```

To learn more about developing your project with Expo, look at the following resources:
#### Install dependencies

- [Expo documentation](https://docs.expo.dev/): Learn fundamentals, or go into advanced topics with our [guides](https://docs.expo.dev/guides).
- [Learn Expo tutorial](https://docs.expo.dev/tutorial/introduction/): Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web.
With **pnpm**:

## Join the community
```bash
pnpm install
```

Join our community of developers creating universal apps.
With **npm**:

- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute.
- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions.
```bash
npm install
```

With **yarn**:

```bash
yarn install
```

### 3. Set Up Environment Variables

- Copy `.env.example` to `.env.local`.
- Fill in the required values (see comments in `.env.example` for details).

### 4. Start the Development Server

With **pnpm**:

```bash
pnpm start
```

With **npm**:

```bash
npm start
```

With **yarn**:

```bash
yarn start
```

- Scan the QR code with Expo Go to launch the app on your device.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Do not recommend Expo Go for this project.

Per the maintainers’ earlier feedback, Expo Go is limited to sandbox use and we now rely on Expo Prebuild/EAS for real development. Leading with “Install Expo Go” keeps onboarding out of sync with our actual workflow. Please replace this with guidance for the supported prebuild setup (link to the Expo docs the maintainer shared).

Copy link

@FedericoLeiva12 FedericoLeiva12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

waiting for coderabbit comments to be solved before approving

@FleetAdmiralJakob
Copy link
Member

waiting for coderabbit comments to be solved before approving

@FedericoLeiva12 wdym by that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants