{"id":22208268,"url":"https://github.com/gracile-web/starter-projects","last_synced_at":"2025-08-17T08:06:13.417Z","repository":{"id":239050930,"uuid":"783484447","full_name":"gracile-web/starter-projects","owner":"gracile-web","description":"Templates used by with \"npm create gracile@latest\" or via shallow cloning.","archived":false,"fork":false,"pushed_at":"2025-04-07T14:03:55.000Z","size":208,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T14:39:27.227Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gracile.js.org/","language":"TypeScript","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/gracile-web.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":"2024-04-08T01:35:24.000Z","updated_at":"2025-04-07T14:03:59.000Z","dependencies_parsed_at":"2024-05-09T18:14:43.346Z","dependency_job_id":"58da9a04-852e-4cb5-9538-75dad525c820","html_url":"https://github.com/gracile-web/starter-projects","commit_stats":null,"previous_names":["gracile-web/starter-projects"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gracile-web/starter-projects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracile-web%2Fstarter-projects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracile-web%2Fstarter-projects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracile-web%2Fstarter-projects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracile-web%2Fstarter-projects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gracile-web","download_url":"https://codeload.github.com/gracile-web/starter-projects/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gracile-web%2Fstarter-projects/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270820793,"owners_count":24651534,"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-08-17T02:00:09.016Z","response_time":129,"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":[],"created_at":"2024-12-02T19:17:02.726Z","updated_at":"2025-08-17T08:06:13.389Z","avatar_url":"https://github.com/gracile-web.png","language":"TypeScript","funding_links":[],"categories":["Starter Templates"],"sub_categories":[],"readme":"# 🎇 Starter projects\n\n\u003cdiv class=\"git-only\"\u003e\n\n_Gracile_.  \nA thin, full-stack, **web** framework.\n\n**Features**:\n\n- Portable **HTML**, **CSS** and **JS**, thanks to **Lit (SSR)**.\n- Highly responsive during dev. and build, thanks to **Vite**.\n- **Minimal dependency footprint** for its **runtime** and your **distributable**.\n- Embrace web standards like **Custom Elements** (aka Web Components) or the **WhatWG Fetch** API.\n- A streamlined **D**eveloper e**X**perience for building, instead of fiddling around.\n\n---\n\n**Starters**:\n\n- [Basics](#basics)\n- [Minimal setup (static)](#minimal-setup-static)\n- [Minimal setup (Bootstrap/Tailwind)](#minimal-setup-bootstraptailwind)\n- [Minimal setup with various kinds of test suites.](#minimal-setup-with-various-kinds-of-test-suites)\n- [Minimal setup (HTML/CSS minification)](#minimal-setup-htmlcss-minification)\n- [Minimal setup for client routing (SPA)](#minimal-setup-for-client-routing-spa)\n- [Minimal server (Express)](#minimal-server-express)\n- [Minimal server (Hono)](#minimal-server-hono)\n\n\u003c/div\u003e\n\n\u003csection class=\"cards tiles\"\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Basics\n\nGet up and running with this all around demo of Gracile features.\n\n- ✅ Minimal styling (make it your own!)\n- ✅ SEO-friendly with canonical URLs and OpenGraph data\n- ✅ Sitemap support\n- ✅ Markdown support\n- ✅ SVG support\n- ✅ Server-rendered Lit Elements\n\n---\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t basics\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/basics?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/basics)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/basics my-project\n```\n\n📑 **Sources**: [basics](https://github.com/gracile-web/starter-projects/tree/main/templates/basics)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal setup (static)\n\nA statically generated project.\n\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-static\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-static?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-static)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-static my-project\n```\n\n📑 **Sources**: [minimal-static](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-static)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal setup (Bootstrap/Tailwind)\n\nA project with popular vendors CSS preconfigured.\n\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-bootstrap-tailwind\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-bootstrap-tailwind?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-bootstrap-tailwind)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-bootstrap-tailwind my-project\n```\n\n📑 **Sources**: [minimal-bootstrap-tailwind](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-bootstrap-tailwind)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal setup with various kinds of test suites.\n\nBrowser (Playwright), Unit tests (Node).\n\n**Available commands**\n\n```sh\ntest:unit\ntest:unit:dev\n\ntest:integration\ntest:integration:dev\n\ntest:component\ntest:component:dev\n\ntest:e2e\ntest:e2e:dev\n\ntest:all\n```\n    \n\n---\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-testing\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-testing?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-testing)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-testing my-project\n```\n\n📑 **Sources**: [minimal-testing](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-testing)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal setup (HTML/CSS minification)\n\nStatic/server and dev/build with minified CSS+HTML.\n\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-minification\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-minification?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-minification)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-minification my-project\n```\n\n📑 **Sources**: [minimal-minification](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-minification)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal setup for client routing (SPA)\n\nClient-side routing demo, with hydration, for any mode.\n\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-client-routing\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-client-routing?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-client-routing)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-client-routing my-project\n```\n\n📑 **Sources**: [minimal-client-routing](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-client-routing)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal server (Express)\n\nA Gracile handler, already set up with Express and static file serving.\n\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-server-express\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-server-express?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-server-express)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-server-express my-project\n```\n\n📑 **Sources**: [minimal-server-express](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-server-express)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003cdiv class=\"card\"\u003e\u003cdiv class=\"card-content\"\u003e\n\n## Minimal server (Hono)\n\nA Gracile handler, already set up with Hono and static file serving.\n\n\n📥 **CLI**:\n\n```sh\nnpm create gracile@latest -t minimal-server-hono\n```\n\n\u003cdiv\u003e\n\n[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/gracile-web/starter-projects/tree/main/templates/minimal-server-hono?embed=1)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/gracile-web/starter-projects/tree/main/templates/minimal-server-hono)\n\n\u003c/div\u003e\n\n⏬ **Download**:\n\n```sh\nnpx degit gracile-web/starter-projects/templates/minimal-server-hono my-project\n```\n\n📑 **Sources**: [minimal-server-hono](https://github.com/gracile-web/starter-projects/tree/main/templates/minimal-server-hono)\n\n\u003c/div\u003e\u003c/div\u003e\n\n\u003c/section\u003e\n\n\u003cdiv class=\"git-only\"\u003e\n\n---\n\n- [Documentation website (gracile.js.org)](https://gracile.js.org/)\n- [Documentation website repository](https://github.com/gracile-web/website)\n\n---\n\n\u003e “Perfection is achieved, not when there is nothing more to add,\n\u003e but when there is nothing left to take away.”\n\u003e\n\u003e ― [Antoine de Saint-Exupéry](https://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry), _Airman's Odyssey_\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgracile-web%2Fstarter-projects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgracile-web%2Fstarter-projects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgracile-web%2Fstarter-projects/lists"}