{"id":16934407,"url":"https://github.com/jamiepine/cal-submodule-proposal","last_synced_at":"2025-10-03T20:39:22.092Z","repository":{"id":97678896,"uuid":"439471300","full_name":"jamiepine/cal-submodule-proposal","owner":"jamiepine","description":null,"archived":false,"fork":false,"pushed_at":"2021-12-18T00:54:44.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T04:23:26.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamiepine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-12-17T22:04:19.000Z","updated_at":"2023-03-07T10:17:59.000Z","dependencies_parsed_at":"2023-05-05T18:15:21.375Z","dependency_job_id":null,"html_url":"https://github.com/jamiepine/cal-submodule-proposal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamiepine%2Fcal-submodule-proposal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamiepine%2Fcal-submodule-proposal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamiepine%2Fcal-submodule-proposal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamiepine%2Fcal-submodule-proposal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamiepine","download_url":"https://codeload.github.com/jamiepine/cal-submodule-proposal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamiepine%2Fcal-submodule-proposal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259147077,"owners_count":22812358,"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":[],"created_at":"2024-10-13T20:52:02.331Z","updated_at":"2025-10-03T20:39:22.035Z","avatar_url":"https://github.com/jamiepine.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Cal.com Submodule Concept/Proposal\nWhile we are currently exploring the possibilities of an admin console, I wanted to explore changes to the repo structure that would allow for code sharing and closed source modules.\n\n### Submodules\nThis repository would utilize git submodules to include a **closed source** repository called `console` which utilizes shared code from the open source version of Cal. This design allows more closed source submodules to exist and code share. Originally this concept would have been a monorepo, but with submodules that is not necessary. \n\n### Structure\nTo compliment the submodule setup I also propose changes to the folder structure. \n\nAt the top level we have: \n| Folder        | Purpose                                   |\n|------------|----------------------------------------------|\n| `app`        | The user facing app           |\n| `console`    | The admin dashboard                        |\n| `api`        | Both REST API endpoints and tRPC resolvers |\n| `components` | Shared UI components                       |\n| `lib`        | Shared logic and database CRUD                              |\n| `prisma`     | Database schema                            |\n\n`app`, `console` and `api` all have their own `pages` directory which we can use \"Multi Zones\" from Next.js to serve three separate deployments. \n\nCurrently we have `pages/api/*` and `server/router/*` for our API and tRPC resolvers respectively. API routes feel weird served up from the same pages folder as the base app, and tRPC resolvers could be confused as being the primary API. In this re-structure they live together in an `api` directory and share logic from `lib`.\n\n### Tests\nEach of these directories have their own respective `tests` folder for modularity, I believe this will help encourage tests to be written and each layer of our application isolates concerns. `api/tests`, `api/tRPC/tests`, `lib/tests`, `components/tests` etc...\n\n### Licensing\nInstead of having a dedicated folder for `ee` we can license specific areas of our application accordingly.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamiepine%2Fcal-submodule-proposal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamiepine%2Fcal-submodule-proposal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamiepine%2Fcal-submodule-proposal/lists"}