{"id":19219819,"url":"https://github.com/jedwards1230/mychat","last_synced_at":"2026-04-11T12:47:27.066Z","repository":{"id":230096805,"uuid":"778473856","full_name":"jedwards1230/myChat","owner":"jedwards1230","description":"ChatGPT Clone built with React Native and Fastify","archived":false,"fork":false,"pushed_at":"2024-05-15T09:51:48.000Z","size":39481,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-15T15:38:59.180Z","etag":null,"topics":["fastify","openai","openapi","react-native"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jedwards1230.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-27T19:48:57.000Z","updated_at":"2024-05-17T07:48:12.766Z","dependencies_parsed_at":"2024-05-17T07:58:36.714Z","dependency_job_id":null,"html_url":"https://github.com/jedwards1230/myChat","commit_stats":null,"previous_names":["jedwards1230/mychat"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1230%2FmyChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1230%2FmyChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1230%2FmyChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1230%2FmyChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jedwards1230","download_url":"https://codeload.github.com/jedwards1230/myChat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240292392,"owners_count":19778311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastify","openai","openapi","react-native"],"created_at":"2024-11-09T14:32:56.917Z","updated_at":"2025-11-14T12:04:38.371Z","avatar_url":"https://github.com/jedwards1230.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# myChat\n\nChatGPT clone. Definitely a WIP. This project was mostly to learn React Native and Fastify.\n\n## Tooling\n\n### Server\n\n- Fastify\n  - Serve client as a SPA React app\n  - Schema validation with `zod`\n  - Auto-generated OpenAPI docs served at `/docs`\n- TypeORM \u0026 Postgres\n- OpenAI API\n\n### Client\n\n- React Native and Expo\n- Server state management with `@tanstack/react-query`\n- Theming with `nativewind` and `tailwindcss`\n- Reusable UI components with `@radix-ui`\n\n### Deployment\n\nThere are two Compose files. They pull from `jewards1230/mychat` on Docker Hub. There is a Github Action that builds and pushes the image on every push to the `main` branch. \n\nThese can be modified for local build contexts, but I generally only use docker for the local Postgres DB.\n\n#### Compose.yml\n\n- Docker Compose will serve:\n  - Fastify server with static web client on port 3000\n  - Postgres DB\n- This is mostly used for local development and testing\n\n#### Production.yml\n\n- Docker Compose will serve the same as above, plus:\n  - Tailscale Proxy that serves the Fastify server to the web with SSL\n    - This is nice because it gives the app its own machine on the Tailscale network.\n    - This exposes the Fastify server on port 443\n    - This requires copying the funnel.json file to the appropriate directory when configuring Docker Compose variables\n    - This can be reconfigured to use the Tailscale Serve service as well.\n\n#### Development\n\n- The Dockerfile compiles the main backend and serves a Postgres DB.\n  - Note: Generally best to just run the PG DB alone and run fastify form the CLI\n  - TODO: Add dev mode so docker watches for changes and restarts the server.\n- Run `yarn run export` from the `./client` directory to export the web client to the `./client/dist` directory. The Dockerfile has an ENV variable to point to this directory.\n\n## Features\n\n### Server\n\n- Database stores all chats and user data\n- Optional JSON/stream response for chats\n- Route schema validation\n- OpenAPI spec (runs on `/docs` while server is running)\n- Thread queue system\n\n### Client\n\n- Responsive Web view\n- Native build (only tested iOS)\n- Chat with the default agent. CRUD your messages and threads.\n- Light/dark themes\n- Create new agents\n- Stream chat responses\n- Upload files and inject text into message\n- iOS: Native screens/routing\n- iOS: Native context menus\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedwards1230%2Fmychat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjedwards1230%2Fmychat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedwards1230%2Fmychat/lists"}