{"id":13998376,"url":"https://github.com/Fredkiss3/gh-next","last_synced_at":"2025-07-23T06:31:28.365Z","repository":{"id":177121147,"uuid":"658107861","full_name":"Fredkiss3/gh-next","owner":"Fredkiss3","description":"A minimal Github clone built on nextjs app router.","archived":false,"fork":false,"pushed_at":"2025-02-22T03:15:47.000Z","size":2832,"stargazers_count":459,"open_issues_count":18,"forks_count":22,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-17T08:50:56.750Z","etag":null,"topics":["app-directory","nextjs","react","typescript"],"latest_commit_sha":null,"homepage":"https://gh.fredkiss.dev/","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/Fredkiss3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2023-06-24T19:44:10.000Z","updated_at":"2025-06-14T17:15:19.000Z","dependencies_parsed_at":"2024-09-13T09:54:53.745Z","dependency_job_id":"5fc08774-c516-4765-8f25-24a34fe93a32","html_url":"https://github.com/Fredkiss3/gh-next","commit_stats":null,"previous_names":["fredkiss3/gh-next"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fredkiss3/gh-next","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fredkiss3%2Fgh-next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fredkiss3%2Fgh-next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fredkiss3%2Fgh-next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fredkiss3%2Fgh-next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fredkiss3","download_url":"https://codeload.github.com/Fredkiss3/gh-next/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fredkiss3%2Fgh-next/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266631348,"owners_count":23959419,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["app-directory","nextjs","react","typescript"],"created_at":"2024-08-09T19:01:37.428Z","updated_at":"2025-07-23T06:31:27.931Z","avatar_url":"https://github.com/Fredkiss3.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# A simple clone of github in Next.JS\n\nA simple github alternative open source on github (ironic right ?), it aims is to be fully functionnal with some of the core features of github working.\n\nSee [#84](https://github.com/Fredkiss3/gh-next/issues/84) for more info on the supported features.\n\n## ⚠️ THIS PROJECT IS IN ACTIVE DEVELOPMENT ⚠️\n\nExpect stuff to break.\n\n## Roadmap\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to see more\u003c/summary\u003e\n\n- [x] Login/Logout\n- [x] HomePage (README content)\n- [x] Responsive Layout\n- [x] Settings page for toggling theme\n- [x] Stargazers Page\n- [x] See Profile informations\n  - [x] Update username\n  - [x] Change theme\n  - [ ] User detail page\n- [x] Issues List page\n  - [x] Search \u0026 filter issues by author, label, assignee, closed/open, title, mentions, etc. (Inspiration: https://github.com/openstatusHQ/openstatus, https://docs.github.com/en/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests)\n- [ ] New issue page\n  - [ ] Issue CRUD (by the author only)\n  - [ ] Comments CRUD\n  - [ ] Mentions\n  - [ ] Issue Popovers (for previewing issues)\n  - [ ] Linking between issues\n  - [ ] Assign \u0026 self assign issues\n- [ ] OpenGraph\n  - [ ] landing (inspiration: https://github.com/trpc/trpc/blob/main/www/og-image/pages/api/landing.tsx)\n  - [ ] Per repository\n  - [ ] Per user\n  - [ ] Per Issue (inspiration: https://opengraph.githubassets.com/101e5bdeef8e959c800fab2aef88eef0b01b15d883e3e17c990bde8dfd67d6b3/trpc/trpc/issues/4306)\n- [ ] Labels CRUD (can only add or update labels, no deleting)\n- [ ] Notifications page\n  - [ ] Notifications badge (Inspiration: https://gist.github.com/Fredkiss3/ab918aee3977d681f0508537a44838c0, https://github.com/Fredkiss3/bunrest)\n  - [ ] Notifications for issues subscriptions\n  - [ ] Notifications for mentions\n  - [ ] Notifications for issue statuses\n  - [ ] Filter notifications by status, title, closed, etc.\n  - [ ] Mark as done, unsubscribe\n- [ ] files hosting for repos (with a storage limit)\n  - [ ] file browsing UI\n  - [ ] file searching\n- [ ] Repository list\n  - [ ] list of repos\n  - [ ] search for repos\n- [ ] Git web UI\n  - [ ] commit history\n  - [ ] time travel\n  - [ ] support `git push` and `git remote` commands\n- [ ] issue kanban board (like github projects), to close an issue either with a commit or from the UI\n- [ ] CI/CD\n  - [ ] running CI with docker, we can take inspiration from gitlab\n\n\u003c/details\u003e\n\n## Stack\n\n- [Next App Router](https://nextjs.org/docs/app)\n- [drizzle](https://orm.drizzle.team/) + local Postgres database\n- Hosted to a custom VPS, see [the CI/CD workflow](./.github/workflows/deploy-to-vps.yaml) for how it is all deployed\n- [tailwindCSS](https://tailwindcss.com/) for the styling\n\n## Requirements\n\n- Node \u003e= v18.x\n- [pnpm](https://pnpm.io/installation) \u003e= v8.x\n- [docker](https://docs.docker.com/engine/install/) installed for local development\n- A registered [github app](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app) for authenticating users\n\n## 🚀 How to work on the project ?\n\n1. First you have to clone the repository\n\n   ```bash\n   git clone https://github.com/Fredkiss3/gh-next.git\n   ```\n\n2. **Start the docker compose instance to start the DB + redis instance :**\n\n   ```bash\n   docker-compose up -d --remove-orphans\n   ```\n\n3. **Install the dependencies :**\n\n   ```bash\n   pnpm install\n   ```\n\n4. Rename `.env.example` to `.env.local` And change the file to your needs,\n\n5. **And launch the project :**\n\n   ```bash\n   pnpm run dev\n   ```\n\n   The app will show at \u003chttp://localhost:3000\u003e.\n\n6. **Open the source code and start rocking ! 😎**\n\n## 🧐 Project structure\n\nA quick look at the top-level files and directories you will see in this project.\n\n```plaintext\n  .\n  ├── src/\n  │    ├── app\n  │    ├── actions\n  │    ├── components\n  │    ├── models\n  │    └── lib/\n  │         ├── client\n  │         ├── server\n  │         └── shared\n  ├── biome.json\n  ├── pnpm-lock.yaml\n  └── tsconfig.json\n```\n\n1. `src/app/`: this folder contains all the routes \u0026 pages of our app.\n\n2. `src/actions` : this folder contains all the logic of our app.\n\n3. `src/components` : this folder contains all the components of our app.\n\n4. `src/models` : this folder contains all the DB models of our app.\n\n5. `src/lib/`: this folder contains utils \u0026 helpers used throughout our app :\n\n   1. `client` : this folder contains all the utilities that are client-only, usually used by client components. It contains mainly hooks\n\n   2. `server` : this folder contains all the utilities that are server-only, for use within server components and server actions. It also contains the DB schemas inside `db/schema`\n\n   3. `shared` : this folder contains all the utilities that are shared between the server \u0026 client, these can be used anywhere in the app. \n\n6. `biome.json`: this file contains the configuration for biome to enable autoformatting.\n\n7. `pnpm-lock.yaml`: this file contains the dependencies lock for the repo.\n\n8. `tsconfig.json`: this file contains the configuration for typescript, that are used by the all the underlying packages\n\n## 🍳 ENV VARIABLES USED\n\n| Nom                            | role                                                                             |\n| ------------------------------ | -------------------------------------------------------------------------------- |\n| `SESSION_SECRET`               | random 32 chars length string used to encode the session id                      |\n| `REDIS_HTTP_URL`               | The URL to the connect to redis HTTP for a key/value store                       |\n| `DATABASE_URL`                 | The URL to the connect to the Postres Database                                   |\n| `REDIS_HTTP_USERNAME`          | LOCAL file server URL for storing key values                                     |\n| `REDIS_HTTP_PASSWORD`          | LOCAL file server URL for storing key values                                     |\n| `GITHUB_CLIENT_ID`             | github client id stored for our app used for authenticating users with github    |\n| `GITHUB_PERSONAL_ACCESS_TOKEN` | github client token stored for our app used for authenticating users with github |\n| `GITHUB_REDIRECT_URI`          | URL to redirect when a user has been authenticated                               |\n| `GITHUB_SECRET`                | github secret stored for our app                                                 |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFredkiss3%2Fgh-next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFredkiss3%2Fgh-next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFredkiss3%2Fgh-next/lists"}