{"id":32843898,"url":"https://github.com/aongcho880/swapshop","last_synced_at":"2026-04-28T16:01:45.328Z","repository":{"id":322755495,"uuid":"1090757233","full_name":"AongCho880/SwapShop","owner":"AongCho880","description":"SwapShop — A production‑ready full‑stack mobile marketplace (React Native + Express + MongoDB) built as a capstone to master professional mobile app development. Monorepo, TypeScript, security-first, free-for-dev tools.","archived":false,"fork":false,"pushed_at":"2025-11-06T05:35:46.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-06T07:15:08.090Z","etag":null,"topics":["architecture","bullmq","express-js","fcm-notifications","markeplace","minio","mobile-app","mongodb-atlas","mongoose-schema","monorepo","radis","react-native-app","security","socket-io","stripe-payments","typescript"],"latest_commit_sha":null,"homepage":"","language":null,"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/AongCho880.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-06T05:10:26.000Z","updated_at":"2025-11-06T05:48:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AongCho880/SwapShop","commit_stats":null,"previous_names":["aongcho880/swapshop"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AongCho880/SwapShop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AongCho880%2FSwapShop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AongCho880%2FSwapShop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AongCho880%2FSwapShop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AongCho880%2FSwapShop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AongCho880","download_url":"https://codeload.github.com/AongCho880/SwapShop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AongCho880%2FSwapShop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283307727,"owners_count":26814472,"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","status":"online","status_checked_at":"2025-11-08T02:00:06.281Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["architecture","bullmq","express-js","fcm-notifications","markeplace","minio","mobile-app","mongodb-atlas","mongoose-schema","monorepo","radis","react-native-app","security","socket-io","stripe-payments","typescript"],"created_at":"2025-11-08T06:00:49.063Z","updated_at":"2025-11-08T06:02:04.906Z","avatar_url":"https://github.com/AongCho880.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# SwapShop — Full‑stack Mobile Marketplace\n\nA production‑ready learning capstone that builds a complete marketplace app using:\n- Mobile: Bare React Native + TypeScript\n- Server: Express + TypeScript + MongoDB (Mongoose)\n- Realtime: Socket.IO\n- Media: S3‑compatible (MinIO in dev)\n- Notifications: FCM + Notifee (free for dev)\n- Payments: Provider abstraction; start with Stripe test mode (BDT)\n- Infra: Docker Compose (MongoDB, Redis, MinIO)\n- Monorepo; security‑first; free‑for‑dev services\n\n## Free‑for‑dev principle\nAll tools and services must be free during development (local or free tier). Paid services will be considered at deployment time only.\n\n## Goals\n- Learn professional full‑stack mobile development end‑to‑end\n- Ship secure, scalable, observable software\n- Practice CI/CD, testing, and production hygiene\n\n## Architecture at a glance\n- React Native (TypeScript, React Navigation, React Query, Zustand/RTK, RHF + Zod)\n- Express API (Zod validation, Helmet, CORS, rate limiting, pino/winston logs)\n- MongoDB Atlas (free M0) + Mongoose (indexes, transactions)\n- Redis + BullMQ for background jobs\n- S3‑compatible storage (MinIO dev; R2/S3 later)\n- Stripe test mode (BDT) behind a payment adapter interface\n\n## Monorepo layout (planned)\n```\n/apps\n  /mobile     # React Native app\n  /server     # Express API\n/packages     # Shared configs/types (optional)\n```\n\n## Start here\n- Read BACKLOG.md for milestones and vertical slices\n- See decisions in DECISIONS.md\n- Follow progress in WORKLOG.md\n\n## Local prerequisites\n- Node.js 20 LTS, npm 10+\n- Git, Docker Desktop (or docker + docker-compose)\n- macOS + Xcode for iOS, Android Studio for Android\n- Java 17 (Android Gradle)\n- gh (GitHub CLI) optional but recommended\n\n## Next steps\nWe will proceed in small steps with instructor‑style explanations. First milestones:\n1) Bootstrap \u0026 quality gates (repo/tooling)\n2) Auth vertical (signup/login/logout with secure tokens)\n3) Listings + media uploads (pre‑signed URLs to MinIO)\n\n## Contributing\nSee CONTRIBUTING.md. Conventional commits are used.\n\n## Security\nSee SECURITY.md. Never commit secrets. Use `.env` files locally and environment secrets in CI/deploy.\n\n## License\nMIT — see LICENSE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faongcho880%2Fswapshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faongcho880%2Fswapshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faongcho880%2Fswapshop/lists"}