{"id":13423750,"url":"https://github.com/tudorconstantin/knests","last_synced_at":"2026-02-11T19:36:43.444Z","repository":{"id":39704660,"uuid":"262721122","full_name":"tudorconstantin/knests","owner":"tudorconstantin","description":"Full-stack boilerplate (project/hackathon starter) with Docker/NodeJS/Typescript/GraphQL/React/Material-UI","archived":false,"fork":false,"pushed_at":"2026-02-05T10:41:04.000Z","size":4418,"stargazers_count":350,"open_issues_count":25,"forks_count":43,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-02-05T11:43:23.080Z","etag":null,"topics":["docker","fullstack","graphql","javascript","nodejs","postgresql","react","typescript"],"latest_commit_sha":null,"homepage":"","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/tudorconstantin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-10T05:47:05.000Z","updated_at":"2026-02-02T08:56:41.000Z","dependencies_parsed_at":"2024-03-25T12:32:09.648Z","dependency_job_id":"6219e7c7-22ce-4b35-b251-6f329488f683","html_url":"https://github.com/tudorconstantin/knests","commit_stats":null,"previous_names":[],"tags_count":1,"template":true,"template_full_name":null,"purl":"pkg:github/tudorconstantin/knests","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tudorconstantin%2Fknests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tudorconstantin%2Fknests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tudorconstantin%2Fknests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tudorconstantin%2Fknests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tudorconstantin","download_url":"https://codeload.github.com/tudorconstantin/knests/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tudorconstantin%2Fknests/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29342172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T18:58:20.535Z","status":"ssl_error","status_checked_at":"2026-02-11T18:56:44.814Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docker","fullstack","graphql","javascript","nodejs","postgresql","react","typescript"],"created_at":"2024-07-31T00:00:41.708Z","updated_at":"2026-02-11T19:36:43.427Z","avatar_url":"https://github.com/tudorconstantin.png","language":"TypeScript","funding_links":[],"categories":["Boilerplates","TypeScript","🌐 Web Development - Frontend"],"sub_categories":[],"readme":"# The KNESTS Stack\n* [KNEx.js](http://knexjs.org/)\n* [NEST.js](https://nestjs.com/)\n* [NExT.js](https://nextjs.org/)\n* [TS](https://www.typescriptlang.org/)\n\n* [GraphQL](https://graphql.org/)\n* [Docker](https://www.docker.com/)\n\nThe above libraries and frameworks are the best ones (in my opinion, of course) regarding my desires at the moment of starting this project. \n\nIt's just a simple (albeit huge) coincidence that 3 of them sound NEX-ish. It would've been a shame not to name the stack similarly.\n\nI wanted a NodeJS/Typescript based stack that would:\n* Help me develop web apps as fast as possible\n* With the cool javascript technologies of the moment (the \"moment\" is 2020 - most probably a small part of 2020): Typescript, React with typescript and hooks, GraphQL, Material-UI.\n* While following as much as possible the good ideas from the [NodeJS best practices](https://github.com/goldbergyoni/nodebestpractices).\n\n## About\n\nIf interested, read about the [whys and the objectives of the Knests Stack on my blog.](https://programming.tudorconstantin.com/2020/05/the-knests-stack.html)\n\n## How it looks\n\nIt contains the [free admin dashboard theme from devias.io](https://material-kit-react.devias.io/app/dashboard).\n\n![ \"Simple Login with Email\"](/client/public/screenshots/login.png)\n![Signup](/client/public/screenshots/signup.png?raw=true \"Signup Form\")\n![Dashboard Big](/client/public/screenshots/dashboard_big.png?raw=true \"Big Dashboard\")\n![Responsive Dashboard](/client/public/screenshots/dashboard_small.png?raw=true \"Responsive Dashboard\")\n\n## Getting started\n* Clone this repo and `cd` into it\n\nOnly needed to be run first time: \n\n```bash\n$ docker network create traefik-public\n$ docker network create knests-dev\n```\n\n```bash\n`rm -rf client/dist \u0026\u0026 docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build -V --force-recreate`\n```\n\nNote: The `rm -rf client/dist` part is needed (for now, until we have a better solution) for deleting the files  nextjs generates.\n\nGo to http://localhost:8080/api/migrate to have the latest migrations applied.\nGo to http://localhost:8080/signup and create your first user.\n\n## Make it yours\n\nSearch and replace `knests` with **your own project name** and you'll have a project with:\n* `/signup` page and functionality\n* `/login` page and functionality\n* `/admin/dashboard` basic page, taken from [devias.io](https://devias.io/products/material-react-dashboard)\n\n\n## Debugging tips \u0026 tricks\n\n* You can run just a service from the stack (for example if you want to connect to DB from some external GUI client), you can do it like this: `rm -rf client/dist/ \u0026\u0026 docker-compose -f docker-compose.yml -f docker-compose.dev.yml run  --service-ports postgres` - make sure you expose the service ports to the host using the [ports directive](https://docs.docker.com/compose/compose-file/#ports)\n\n## Docker \u0026 docker-compose cheatsheet\n\n### Docker image re-building from scratch\nThere are moments in the dev/test flow when the docker images need to be rebuilt (after installing new packages for example). AAdding the `--build` parameter to the docker-compose command will usually be enough. For example:\n\n`rm -rf client/dist/ \u0026\u0026 time docker-compose -f docker-compose.yml -f docker-compose.test.yml up --build --abort-on-container-exit --renew-anon-volumes --force-recreate`\n\nWhen that's not enough, try one of the things below.\n\n### Docker caching\nDocker can be surprising at caching stuff. Caching anonymous volumes was totally unexpected for me. \n\nRead the docs of all the commands that you intend to run on your systems, because these **can and will have side effects** on your systems!\n\nHere are some commands that clear all kind of caches:\n\n* `docker system prune` - this might take a while, because it says it clears everything.\n* `docker rmi $(docker image ls -a)` - tries to remove all the local images.\n\n### Documentation\n\nThere is some [frontend](https://github.com/tudorconstantin/knests/tree/master/client) / [backend](https://github.com/tudorconstantin/knests/tree/master/server) documentation written so you can debug things more thoroughly when they don't go as expected.\n\n## Road map\n- [ ] Fullstack e2e testing using Playwright and code coverage generating for both UI and server.\n- [ ] Create tutorials documenting the development flow using the Knests stack.\n- [ ] Since this is hosted on Github, migrate the Gitlab CI/CD pipeline to Github actions and dockerhub registry.\n- [ ] Deployment and hosting on Kubernetes (?)\n- [ ] Internationalization (?)\n- [ ] Other good ideas\n  \n## Wanna Help?\n- Pick any task from the road map, develop it, document it and submit a Pull Request\n- Clone the repo, build something, see how it goes, come up with ideas on how to improve the overall development experience.\n- Review the code, send suggestions, fixes, etc.\n- Star the repo, share the articles, write yourself about it :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftudorconstantin%2Fknests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftudorconstantin%2Fknests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftudorconstantin%2Fknests/lists"}