{"id":24277108,"url":"https://github.com/indiecodermm/comix","last_synced_at":"2025-04-13T06:01:57.497Z","repository":{"id":269039670,"uuid":"903822331","full_name":"IndieCoderMM/comix","owner":"IndieCoderMM","description":"Gamified commits tracker to make coding fun and engaging","archived":false,"fork":false,"pushed_at":"2025-02-02T15:52:06.000Z","size":25758,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-03-26T22:36:36.987Z","etag":null,"topics":["github-api","nextjs","postgresql","trpc"],"latest_commit_sha":null,"homepage":"https://comix-dev.vercel.app","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/IndieCoderMM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-12-15T16:41:19.000Z","updated_at":"2025-02-02T15:52:11.000Z","dependencies_parsed_at":"2025-01-21T04:41:26.510Z","dependency_job_id":null,"html_url":"https://github.com/IndieCoderMM/comix","commit_stats":null,"previous_names":["indiecodermm/commitly","indiecodermm/comix"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fcomix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fcomix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fcomix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieCoderMM%2Fcomix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IndieCoderMM","download_url":"https://codeload.github.com/IndieCoderMM/comix/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670431,"owners_count":21142903,"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":["github-api","nextjs","postgresql","trpc"],"created_at":"2025-01-15T23:23:13.313Z","updated_at":"2025-04-13T06:01:57.471Z","avatar_url":"https://github.com/IndieCoderMM.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"comix logo\" src=\"./banner.png\"\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://comix-dev.vercel.app\"\u003eHome Page\u003c/a\u003e |\n  \u003ca href=\"https://www.linkedin.com/in/hthantoo/\"\u003eLinkedIn\u003c/a\u003e |\n  \u003ca href=\"https://bsky.app/profile/heinthantoo.bsky.social\"\u003eBlueSky\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\u003cstrong\u003eGamify your GitHub journey!\u003c/strong\u003e\u003cbr\u003e\nTrack your commits, compete globally, and make coding more fun and rewarding with Comix.\n\u003c/div\u003e\n\n---\n\n## What is Comix?\n\n**Comix** is a gamified platform designed to make tracking your GitHub commits fun and engaging.\nWith Comix, you can:\n\n- Set daily commit goals.\n- Earn _GitCoins_ and experience points for completing your goals.\n- Compete on a global leaderboard and climb ranking tiers.\n- Share your repositories and boost them to gain visibility.\n- Access a real-time stats dashboard showing your GitHub contributions.\n\n## Live Website\n\nCheck out **Comix** live! Visit the platform to start tracking your GitHub commits and join the global leaderboard:\n\n\u003ca href=\"https://comix-dev.vercel.app\"\u003ehttps://comix-dev.vercel.app\u003c/a\u003e\n\n\u003e [!NOTE]\n\u003e Comix is an early-stage product, and we welcome any feedback to help us improve the platform.\n\u003e Feel free to share your suggestions or ideas with us!\n\n## Key Features\n\n- 🎯**Daily Goals:** Stay consistent with your coding habits by setting and completing daily commit goals.\n- ⚡**Coins \u0026 EXP:** Make progress more exciting by earning rewards.\n- 👑**Global Leaderboard:** See how you rank among developers worldwide.\n- 🚀**Boost Repositories:** Use your coins to promote your projects and gain visibility.\n- 📊**Real-Time Stats Dashboard:** Get detailed insights into your GitHub contributions.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Dashboard screenshot\" src=\"./screenshot.png\"\u003e\n\u003c/div\u003e\n\n## Use Case\n\n- **For Developers:** Comix helps you maintain consistency in coding while enjoying a gamified experience.\n- **For Project Owners:** Gain visibility for your repositories by boosting them in the Comix platform.\n\n## Tech Stack\n\n- **Frontend:** Next.js, Tailwind CSS, ShadCN\n- **Backend:** tRPC, Apollo, Redis\n- **Database:** PostgreSQL, Drizzle ORM, Supabase\n- **Hosting:** Vercel\n- **Validation:** Zod\n\n## Getting Started\n\n### GitHub OAuth Setup\n\nTo run Comix, you need to create a GitHub OAuth app and retrieve the client ID and secret. Follow these steps:\n\n1. **Create a GitHub OAuth App:**\n\n   - Visit the [GitHub Developer Settings](https://github.com/settings/developers).\n   - Click on **\"New OAuth App\"** under the \"OAuth Apps\" section.\n\n2. **Fill Out Application Details:**\n\n   - **Application Name:** Enter a name (e.g., \"Comix\").\n   - **Homepage URL:** Use your platform's URL (e.g., `https://Comix.example.com`).\n   - **Authorization Callback URL:** Use the callback endpoint (e.g., `https://comix.example.com/api/auth/callback`).\n\n3. **Save and Copy Secrets:**\n\n   - Copy the **Client ID** and **Client Secret** from the app's settings.\n\n### Environment Variables\n\nCreate a `.env.local` file in the root directory and add the following environment variables:\n\n```sh\n# GitHub OAuth\nGITHUB_SECRET=\nGITHUB_ID=\n\n# Random Secret\nNEXTAUTH_SECRET=\n\n# Postgres url\nDB_URL=\n\n# Redis\nREDIS_URL=\n\n# GitHub GraphQL API\nNEXT_PUBLIC_GITHUB_GQL_API=https://api.github.com/graphql\n```\n\n### Installation\n\nThere are two ways to run Comix locally:\n\n1. **With Docker**: If you have Docker installed, you can run the app with Docker Compose. Check out the [Docker Installation](#docker-installation) section.\n2. **Manual Installation**: You can also run the app manually by following the [Manual Installation](#manual-installation) steps.\n\n#### Docker Installation\n\nDocker Compose is the easiest way to run Comix locally. Make sure you have Docker installed on your machine.\n\n1. This command will build containers for the app, postgres, and redis. The app will be available at `http://localhost:3000`.\n\n   ```sh\n   docker-compose up\n   ```\n\n   These are the default urls to access the services:\n\n   ```sh\n    # Postgres url\n    DB_URL=postgresql://comix_user:comix_password@db/comix_dev_db?sslmode=disable\n\n    # Redis\n    REDIS_URL=redis://cache:6379/0\n   ```\n\n2. Run the database migrations:\n\n   ```sh\n    docker-compose exec app npm run db:generate\n    docker-compose exec app npm run db:migrate\n   ```\n\n#### Manual Installation\n\n1. **Install Dependencies:**\n\n   ```sh\n   npm install --legacy-peer-deps\n   ```\n\n2. **Set Up Database:**\n\n   ```sh\n   npm run db:generate\n   npm run db:migrate\n   ```\n\n3. **Run Development Server:**\n\n   ```sh\n   npm run dev\n   ```\n\n4. **Build for Production:**\n\n   ```sh\n   npm build\n   ```\n\n## Project Structure\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to expand\u003c/summary\u003e\n\n```\n.\n└── ./\n    ├── app/\n    ├── components/\n    ├── db/\n    │   ├── drizzle/\n    │   └── db.ts\n    ├── features/\n    │   ├── dashboard/\n    │   └── landing/\n    ├── hooks/\n    ├── lib/\n    │   ├── redis.ts\n    │   └── apollo.ts\n    ├── server/\n    │   └── trpc/\n    │       ├── routers/\n    │       └── trpc.ts\n    ├── services/ # DB \u0026 API services\n    │   ├── users/\n    │   ├── github/\n    │   └── leaderboard/\n    ├── styles/\n    ├── types/\n    ├── utils/\n    │   ├── auth.ts # Auth provider \u0026 session\n    │   └── trpc.ts # trpc client\n    └── middleware.ts\n```\n\n\u003c/details\u003e\n\n### Roadmap\n\n- [ ] **User Profiles:** Allow users to create profiles and share\n- [ ] **Streaks:** Track and reward users for maintaining commit streaks\n- [ ] **Achievements:** Unlock badges and achievements for completing milestones\n- [ ] **More Challenges:** Introduce more coding challenges and competitions\n- [ ] **Custom Challenges:** Allow users to create and share custom challenges\n- [ ] **Bounty Issues:** Solve issues and earn rewards from the community\n\n## Contribution\n\nComix is open-source and we welcome contributions! Check out the repository and feel free to create pull requests or raise issues.\n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cstrong\u003eReady to level up your coding?\u003c/strong\u003e\u003cbr\u003e\n  Login with GitHub and start your Comix journey today!\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findiecodermm%2Fcomix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findiecodermm%2Fcomix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findiecodermm%2Fcomix/lists"}