{"id":25752059,"url":"https://github.com/zavvdev/jello","last_synced_at":"2026-04-28T12:36:18.542Z","repository":{"id":279057348,"uuid":"937314526","full_name":"zavvdev/jello","owner":"zavvdev","description":"Task management app example. Next.js, Postgres, Layered Architecture. No ORM, No TypeScript.","archived":false,"fork":false,"pushed_at":"2025-05-10T11:05:36.000Z","size":2391,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-10T12:18:59.662Z","etag":null,"topics":["javascript","layered-architecture","next15","nextjs","no-orm","no-typescript","postgres","postgresql","task-manager"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zavvdev.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,"zenodo":null}},"created_at":"2025-02-22T20:52:35.000Z","updated_at":"2025-05-10T11:05:39.000Z","dependencies_parsed_at":"2025-02-23T14:26:16.054Z","dependency_job_id":"5fee09bd-7186-4aa7-bafe-001283255b18","html_url":"https://github.com/zavvdev/jello","commit_stats":null,"previous_names":["zavvdev/jello"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zavvdev/jello","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zavvdev%2Fjello","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zavvdev%2Fjello/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zavvdev%2Fjello/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zavvdev%2Fjello/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zavvdev","download_url":"https://codeload.github.com/zavvdev/jello/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zavvdev%2Fjello/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285611835,"owners_count":27201484,"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-21T02:00:06.175Z","response_time":61,"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":["javascript","layered-architecture","next15","nextjs","no-orm","no-typescript","postgres","postgresql","task-manager"],"created_at":"2025-02-26T14:20:02.545Z","updated_at":"2025-11-21T12:04:05.660Z","avatar_url":"https://github.com/zavvdev.png","language":"JavaScript","readme":"# Jello\n\n## Prerequisites\n\n- Install Make\n\n- Install Node.js\n\n- Install Docker\n\n## Setup\n\n1. Create `.env` file from `.env.example` and fill database variables\n\n2. Make sure your Node.js version matches that one from `.nvmrc` file\n\n3. Run `npm install`\n\n4. Run `make db-up`\n\n5. Run `make db-setup`\n\n6. Run `make db-migrate`\n\n7. Run either `make dev` to run app in dev mode or `make prod` to run in production mode.\n\n## Scripts\n\n`make dev` - run application in development mode\n\n`make prod` - run application in production mode\n\n`make analyze` - run application static analysis\n\n`make prettify` - apply prettier to files\n\n`make migration name=\u003cname\u003e` - generate migration file\n\n`make db-up` - create a database container from image\n\n`make db-setup` - execute initial database migrations\n\n`make db-migrate rollback=\u003ctrue|false\u003e filter=\u003cmigration1,migration2\u003e` - execute database migrations\n\n`make db-stop` - stop database container\n\n`make db-start` - start stopped database container\n\n`make db-down` - shutdown database container and remove all related data\n\n`make db-exec id=container-id` - get access to container command line\n\n`make db-sc` - show running containers\n\n## Data flow\n\n1. Next.js api routes responsible for accepting data from user, making any transformations related to Next.js ecosystem (for example, extrac token from cookies etc) and calling controllers from `core/gateway`.\n\n2. Controllers responsible for Authentication and Validation. Then they should delegate execution to processes from `core/domain`.\n\n3. Processes are functions that perform domain business logic. Responsible for Authorization and communication with repositories from `core/infrastructure`.\n\n4. Repositories are responsible for db CRUD operations.\n\n## Result value rules\n\n1. If any process from `core/domain` needs to return something, it should be wrapper into `Result`.\n\n2. If any controller from `core/gateway` needs to return something, it should be wrapper into `Result`.\n\n3. If process has no return value, you can omit Result and return an empty Either.\n\n## Repositories\n\nRepositories are needed for database CRUD operations. Do not write complex logic there. Move it into processes instead.\n\nEach repository method is obligated to use its local `#client` for making database queries. Do not use `db` directly inside repository methods because in this case when you need to perform a transaction from processes, your method won't inherit `client` that is needed for this transaction.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzavvdev%2Fjello","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzavvdev%2Fjello","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzavvdev%2Fjello/lists"}