Migrate to monorepo, and create mobile app in react native#190
Migrate to monorepo, and create mobile app in react native#190acarlson33 wants to merge 1 commit into
Conversation
FirepitProject ID: Tip Trigger functions via HTTP, SDKs, events, webhooks, or scheduled cron jobs |
📝 WalkthroughSummary by CodeRabbit
WalkthroughREADME.md rewritten from single-app overview to monorepo guide, introducing workspace structure, Quick Start, scripts reference, development workflow, environment setup, and troubleshooting. Removed version banner, extensive feature lists, known limitations, and production deployment details. ChangesDocumentation Restructure
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
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. Comment |
This stack of pull requests is managed by Graphite. Learn more about stacking. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Around line 232-239: The README shows bun run web:dev:webpack which isn’t
listed in the Web App Scripts table; either add an entry for web:dev:webpack
(and web:build:webpack) to the Web App Scripts table with a short description
and the corresponding script command, or replace the mention in the "Use Webpack
Builder for Web" block with the existing documented script (e.g., the documented
dev/build webpack script name from the Web App Scripts table) so the
troubleshooting commands match the table; update references to the exact script
names web:dev:webpack and web:build:webpack (or the chosen documented
equivalents) so copy/paste onboarding steps stay accurate.
- Around line 111-133: The README's project-structure fenced code block is
missing a language tag which triggers markdownlint MD040; update the fenced
block that starts with the tree listing (the triple-backtick block containing
"firepit/ ├── apps/ ...") to include a language identifier such as "text" (i.e.,
change the opening ``` to ```text) so the code fence is explicitly labeled.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 0e5a0ac0-5711-44f7-ac09-79090b3eb035
⛔ Files ignored due to path filters (299)
.gitignoreis excluded by none and included by noneapps/mobile/.gitignoreis excluded by none and included by noneapps/mobile/.vscode/extensions.jsonis excluded by none and included by noneapps/mobile/.vscode/settings.jsonis excluded by none and included by noneapps/mobile/README.mdis excluded by none and included by noneapps/mobile/app.jsonis excluded by none and included by noneapps/mobile/assets/expo.icon/Assets/expo-symbol 2.svgis excluded by!**/*.svgand included by noneapps/mobile/assets/expo.icon/Assets/grid.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/expo.icon/icon.jsonis excluded by none and included by noneapps/mobile/assets/images/android-icon-background.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/android-icon-foreground.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/android-icon-monochrome.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/expo-badge-white.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/expo-badge.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/expo-logo.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/favicon.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/icon.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/logo-glow.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/react-logo.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/react-logo@2x.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/react-logo@3x.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/splash-icon.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tabIcons/explore.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tabIcons/explore@2x.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tabIcons/explore@3x.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tabIcons/home.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tabIcons/home@2x.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tabIcons/home@3x.pngis excluded by!**/*.pngand included by noneapps/mobile/assets/images/tutorial-web.pngis excluded by!**/*.pngand included by noneapps/mobile/build-tmp/.gitkeepis excluded by none and included by noneapps/mobile/docs/MOBILE_COLOR_PALETTE_N.mdis excluded by none and included by noneapps/mobile/docs/mobile-api-route-structures.mdis excluded by none and included by noneapps/mobile/docs/mobile-feature-parity-backlog.mdis excluded by none and included by noneapps/mobile/docs/mobile-style-guide.mdis excluded by none and included by noneapps/mobile/docs/openapi-doc.ymlis excluded by none and included by noneapps/mobile/eas.jsonis excluded by none and included by noneapps/mobile/index.jsis excluded by none and included by noneapps/mobile/metro.config.jsis excluded by none and included by noneapps/mobile/package.jsonis excluded by none and included by noneapps/mobile/scripts/build.tsis excluded by none and included by noneapps/mobile/src/app/_layout.tsxis excluded by none and included by noneapps/mobile/src/app/explore.tsxis excluded by none and included by noneapps/mobile/src/app/index.tsxis excluded by none and included by noneapps/mobile/src/app/login.tsxis excluded by none and included by noneapps/mobile/src/app/server/[serverId].tsxis excluded by none and included by noneapps/mobile/src/components/animated-icon.module.cssis excluded by none and included by noneapps/mobile/src/components/animated-icon.tsxis excluded by none and included by noneapps/mobile/src/components/animated-icon.web.tsxis excluded by none and included by noneapps/mobile/src/components/app-tabs.tsxis excluded by none and included by noneapps/mobile/src/components/app-tabs.web.tsxis excluded by none and included by noneapps/mobile/src/components/auth-route-guard.tsxis excluded by none and included by noneapps/mobile/src/components/chat-input.tsxis excluded by none and included by noneapps/mobile/src/components/emoji-renderer.tsxis excluded by none and included by noneapps/mobile/src/components/external-link.tsxis excluded by none and included by noneapps/mobile/src/components/hint-row.tsxis excluded by none and included by noneapps/mobile/src/components/image-viewer.tsxis excluded by none and included by noneapps/mobile/src/components/mention-autocomplete.tsxis excluded by none and included by noneapps/mobile/src/components/message-with-mentions.tsxis excluded by none and included by noneapps/mobile/src/components/reaction-button.tsxis excluded by none and included by noneapps/mobile/src/components/reaction-picker.tsxis excluded by none and included by noneapps/mobile/src/components/themed-text.tsxis excluded by none and included by noneapps/mobile/src/components/themed-view.tsxis excluded by none and included by noneapps/mobile/src/components/ui/avatar.tsxis excluded by none and included by noneapps/mobile/src/components/ui/badge.tsxis excluded by none and included by noneapps/mobile/src/components/ui/button.tsxis excluded by none and included by noneapps/mobile/src/components/ui/card.tsxis excluded by none and included by noneapps/mobile/src/components/ui/checkbox.tsxis excluded by none and included by noneapps/mobile/src/components/ui/collapsible.tsxis excluded by none and included by noneapps/mobile/src/components/ui/input.tsxis excluded by none and included by noneapps/mobile/src/components/ui/tabs.tsxis excluded by none and included by noneapps/mobile/src/components/web-badge.tsxis excluded by none and included by noneapps/mobile/src/constants/theme.tsis excluded by none and included by noneapps/mobile/src/global.cssis excluded by none and included by noneapps/mobile/src/hooks/use-color-scheme.tsis excluded by none and included by noneapps/mobile/src/hooks/use-color-scheme.web.tsis excluded by none and included by noneapps/mobile/src/hooks/use-theme.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/bootstrap.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/http.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/index.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/messages.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/persistence.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/servers.tsis excluded by none and included by noneapps/mobile/src/lib/firepit/types.tsis excluded by none and included by noneapps/mobile/src/lib/mention-utils.tsis excluded by none and included by noneapps/mobile/src/lib/reactions-client.tsis excluded by none and included by noneapps/mobile/src/lib/storage/secure-store.tsis excluded by none and included by noneapps/mobile/src/lib/storage/sqlite.tsis excluded by none and included by noneapps/mobile/src/providers/firepit-provider.tsxis excluded by none and included by noneapps/mobile/tsconfig.jsonis excluded by none and included by noneapps/web/.env.local.exampleis excluded by none and included by noneapps/web/.gitignoreis excluded by none and included by noneapps/web/.npmignoreis excluded by none and included by noneapps/web/CHANGELOG.mdis excluded by none and included by noneapps/web/CONTRIBUTING.mdis excluded by none and included by noneapps/web/DEPLOYMENT.mdis excluded by none and included by noneapps/web/README.mdis excluded by none and included by noneapps/web/ROADMAP.mdis excluded by none and included by noneapps/web/assets/default-diamond.pngis excluded by!**/*.pngand included by noneapps/web/assets/default-round.pngis excluded by!**/*.pngand included by noneapps/web/assets/default-square.pngis excluded by!**/*.pngand included by noneapps/web/assets/default-star.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-fall-2025.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-fall-2026.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-spring-2025.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-spring-2026.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-summer-2025.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-summer-2026.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-winter-2025.pngis excluded by!**/*.pngand included by noneapps/web/assets/seasonal-winter-2026.pngis excluded by!**/*.pngand included by noneapps/web/bunfig.tomlis excluded by none and included by noneapps/web/components.jsonis excluded by none and included by noneapps/web/docs/CHAT_AND_REALTIME.mdis excluded by none and included by noneapps/web/docs/FEATURE_FLAGS.mdis excluded by none and included by noneapps/web/docs/MIGRATIONS.mdis excluded by none and included by noneapps/web/docs/MOBILE_COLOR_PALETTE_N.mdis excluded by none and included by noneapps/web/docs/PLATFORM_OPERATIONS.mdis excluded by none and included by noneapps/web/docs/PRODUCT_AND_ONBOARDING.mdis excluded by none and included by noneapps/web/docs/README.mdis excluded by none and included by noneapps/web/docs/ROADMAP_IMPLEMENTATION_SPEC.mdis excluded by none and included by noneapps/web/docs/SERVER_ADMINISTRATION.mdis excluded by none and included by noneapps/web/docs/TELEMETRY.mdis excluded by none and included by noneapps/web/docs/openapi-doc.ymlis excluded by none and included by noneapps/web/eslint.config.jsis excluded by none and included by noneapps/web/instrumentation-client.tsis excluded by none and included by noneapps/web/instrumentation.tsis excluded by none and included by noneapps/web/knip.jsonis excluded by none and included by noneapps/web/newrelic.cjsis excluded by none and included by noneapps/web/newrelic.d.tsis excluded by none and included by noneapps/web/next.config.tsis excluded by none and included by noneapps/web/package.jsonis excluded by none and included by noneapps/web/postcss.config.mjsis excluded by none and included by noneapps/web/posthog-setup-report.mdis excluded by none and included by noneapps/web/public/favicon/apple-touch-icon.pngis excluded by!**/*.pngand included by noneapps/web/public/favicon/favicon-96x96.pngis excluded by!**/*.pngand included by noneapps/web/public/favicon/favicon.icois excluded by!**/*.icoand included by noneapps/web/public/favicon/favicon.pngis excluded by!**/*.pngand included by noneapps/web/public/favicon/favicon.svgis excluded by!**/*.svgand included by noneapps/web/public/favicon/web-app-manifest-192x192.pngis excluded by!**/*.pngand included by noneapps/web/public/favicon/web-app-manifest-512x512.pngis excluded by!**/*.pngand included by noneapps/web/public/sw.jsis excluded by none and included by noneapps/web/scripts/cleanup-orphan-memberships.tsis excluded by none and included by noneapps/web/scripts/generate-version.tsis excluded by none and included by noneapps/web/scripts/setup-appwrite.tsis excluded by none and included by noneapps/web/scripts/test-server-auth.tsis excluded by none and included by noneapps/web/scripts/validate-ci-env.tsis excluded by none and included by noneapps/web/scripts/validate-env.tsis excluded by none and included by noneapps/web/skills-lock.jsonis excluded by none and included by noneapps/web/src/__tests__/__helpers__/mockAppwrite.tsis excluded by none and included by noneapps/web/src/__tests__/admin-server-management.test.tsxis excluded by none and included by noneapps/web/src/__tests__/api-compression.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/announcements-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/audit-logs-export-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/audit-logs-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/categories.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/channel-permissions.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/channel-pins.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/channels.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/conversation-pins.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/custom-emojis.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/debug-auth.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/debug-cookies.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/direct-messages.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/dm-encryption-key-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/dm-pin.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/dm-reactions.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/dm-thread.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/emoji-fileId.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/example-newrelic.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/feature-flags-allow-user-servers.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/friend-system-routes.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/gifs-search-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/inbox-digest-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/inbox-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/invites-code.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/invites-join.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/me-preferences-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/me.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/memberships.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/message-pinning.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/message-poll-close.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/message-poll-votes.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/message-reactions.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/message-threads.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/messages-image-upload.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/messages.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/mute-routes.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/notifications-settings-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/pin-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/profile-userId.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/profiles-batch.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/role-assignments.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/roles.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/search-messages.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/server-members-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/server-moderation-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/server-permissions.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/server-route-settings.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/server-stats-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/servers-create-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/servers-default-signup.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/servers-invites.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/servers-join.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/servers-public.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/servers.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/status-batch.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/status.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/stickers-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/test-env.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/thread-reads-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/thread-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/typing.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/upload-emoji-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/upload-emoji.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/upload-file.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/upload-image.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/user-profile.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/users-relationship.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/users-search.test.tsis excluded by none and included by noneapps/web/src/__tests__/api-routes/verify-email-route.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-admin.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-audit-diagnostics.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-audit.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-auth.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-client.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-core.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-dms-client.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-dms.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-friendships.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-invites.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-messages-advanced.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-messages-enriched.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-messages.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-profiles.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-roles-extended.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-roles.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-server.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-servers-list.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-servers.test.tsis excluded by none and included by noneapps/web/src/__tests__/appwrite-status.test.tsis excluded by none and included by noneapps/web/src/__tests__/auth-server.test.tsis excluded by none and included by noneapps/web/src/__tests__/cache-utils-comprehensive.test.tsis excluded by none and included by noneapps/web/src/__tests__/cached-data.test.tsis excluded by none and included by noneapps/web/src/__tests__/category-settings-panel.test.tsxis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-thread-read-wiring.test.tsxis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useActivityTracking.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useCategories.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useChannels.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useConversations.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useDirectMessages.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useInboxDigest.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useMessages.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useServers.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks-useThreadPinState.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-hooks.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-page.test.tsxis excluded by none and included by noneapps/web/src/__tests__/chat-surface.test.tsis excluded by none and included by noneapps/web/src/__tests__/chat-ui-fixes.test.tsis excluded by none and included by noneapps/web/src/__tests__/client-logger.test.tsis excluded by none and included by noneapps/web/src/__tests__/components/app-layout.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/button.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/chat-surface-message-item.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/chat-surface-panel.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/checkbox.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/conversation-list.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/direct-message-view.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/emoji-renderer.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/file-attachment-display.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/file-attachments-display.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/file-icon.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/global-search.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/header.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/image-with-skeleton.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/input.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/invite-dialogs.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/loader.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/message-poll.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/message-with-mentions.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/mode-toggle.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/moderation-message-list.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/mute-dialog.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/new-conversation-dialog.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/notification-settings.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/providers.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/reaction-components.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/relationship-actions.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/search-results.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/server-admin-panel-utils.test.tsis excluded by none and included by noneapps/web/src/__tests__/components/status-indicator.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/ui-card.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/ui-components.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/ui-switch-tabs.test.tsxis excluded by none and included by noneapps/web/src/__tests__/components/virtualized-message-list.test.tsxis excluded by none and included by noneapps/web/src/__tests__/compression-utils.test.tsis excluded by none and included by noneapps/web/src/__tests__/custom-emojis.test.tsis excluded by none and included by noneapps/web/src/__tests__/default-role.test.tsis excluded by none and included by noneapps/web/src/__tests__/direct-message-view.test.tsxis excluded by none and included by noneapps/web/src/__tests__/dm-chatbox-limit.test.tsis excluded by none and included by noneapps/web/src/__tests__/dm-typing-indicators.test.tsis excluded by none and included by noneapps/web/src/__tests__/enrich-messages.test.tsis excluded by none and included by none
📒 Files selected for processing (1)
README.md
| ``` | ||
| firepit/ | ||
| ├── apps/ | ||
| │ ├── web/ # Next.js web application | ||
| │ │ ├── src/ | ||
| │ │ ├── public/ | ||
| │ │ ├── scripts/ | ||
| │ │ ├── docs/ # Web-specific documentation | ||
| │ │ └── package.json | ||
| │ │ | ||
| │ └── mobile/ # React Native/Expo mobile app | ||
| │ ├── src/ | ||
| │ ├── android/ | ||
| │ ├── assets/ | ||
| │ ├── docs/ # Mobile-specific documentation | ||
| │ └── package.json | ||
| │ | ||
| ├── docs/ # Monorepo documentation | ||
| ├── package.json # Root workspace configuration | ||
| ├── turbo.json # Build pipeline configuration | ||
| ├── tsconfig.json # TypeScript root config | ||
| └── bunfig.toml # Bun package manager config | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the project-structure fenced block.
This fenced block is missing a language identifier, which triggers markdownlint (MD040).
Suggested fix
-```
+```text
firepit/
├── apps/
│ ├── web/ # Next.js web application
@@
├── tsconfig.json # TypeScript root config
└── bunfig.toml # Bun package manager config</details>
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>
[warning] 111-111: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @README.md around lines 111 - 133, The README's project-structure fenced code
block is missing a language tag which triggers markdownlint MD040; update the
fenced block that starts with the tree listing (the triple-backtick block
containing "firepit/ ├── apps/ ...") to include a language identifier such as
"text" (i.e., change the opening totext) so the code fence is explicitly
labeled.
</details>
<!-- fingerprinting:phantom:triton:hawk -->
<!-- This is an auto-generated comment by CodeRabbit -->
| ### Use Webpack Builder for Web | ||
|
|
||
| ### Self-Hosted | ||
| If SWC builds are having issues: | ||
|
|
||
| ```bash | ||
| # Build the application | ||
| bun build | ||
|
|
||
| # Start production server | ||
| bun start | ||
| bun run web:dev:webpack | ||
| bun run web:build:webpack | ||
| ``` |
There was a problem hiding this comment.
Keep troubleshooting commands aligned with the scripts reference.
Line 237 introduces bun run web:dev:webpack, but that command is not documented in the Web App Scripts table. Please either add it there or replace this with a documented equivalent to prevent broken-copy/paste onboarding steps.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 232 - 239, The README shows bun run web:dev:webpack
which isn’t listed in the Web App Scripts table; either add an entry for
web:dev:webpack (and web:build:webpack) to the Web App Scripts table with a
short description and the corresponding script command, or replace the mention
in the "Use Webpack Builder for Web" block with the existing documented script
(e.g., the documented dev/build webpack script name from the Web App Scripts
table) so the troubleshooting commands match the table; update references to the
exact script names web:dev:webpack and web:build:webpack (or the chosen
documented equivalents) so copy/paste onboarding steps stay accurate.


This pull request sets up the initial project structure and configuration for the Expo-based mobile app. It includes project metadata, recommended development tools and settings, a comprehensive README for onboarding, and documentation for design consistency. The changes establish a solid foundation for mobile development, enforce best practices, and ensure the app will match the web version's visual style.
Project configuration and setup:
app.jsonwith Expo project metadata, platform-specific settings, and plugin configuration for iOS, Android, and web. This includes icon paths, splash screen, notification, secure storage, and SQLite settings..gitignoreto exclude dependencies, build artifacts, native files, environment files, and platform-specific files from version control.Developer experience improvements:
expo.vscode-expo-tools) and workspace settings to standardize code actions on save, such as fixing, organizing imports, and sorting members. [1] [2]README.mdwith setup instructions, development workflow, and information about authentication and configuration for the Firepit app.Design and documentation:
MOBILE_COLOR_PALETTE_N.mdto document the color palette, theme tokens, and mapping rules to ensure the mobile app visually matches the web app.assets/expo.icon/icon.jsonto define icon layers and appearance for various platforms.