{"id":22490260,"url":"https://github.com/jsulpis/nuxt3-template","last_synced_at":"2025-07-23T14:06:41.643Z","repository":{"id":45321548,"uuid":"155056178","full_name":"jsulpis/nuxt3-template","owner":"jsulpis","description":"Nuxt 3 template for public websites","archived":false,"fork":false,"pushed_at":"2023-03-02T12:26:32.000Z","size":2222,"stargazers_count":54,"open_issues_count":1,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T06:56:24.087Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://nuxt3-template-jsulpis.vercel.app/","language":"Vue","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/jsulpis.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}},"created_at":"2018-10-28T09:52:45.000Z","updated_at":"2025-04-04T14:47:16.000Z","dependencies_parsed_at":"2024-12-06T17:36:53.394Z","dependency_job_id":null,"html_url":"https://github.com/jsulpis/nuxt3-template","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/jsulpis/nuxt3-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsulpis%2Fnuxt3-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsulpis%2Fnuxt3-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsulpis%2Fnuxt3-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsulpis%2Fnuxt3-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsulpis","download_url":"https://codeload.github.com/jsulpis/nuxt3-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsulpis%2Fnuxt3-template/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266691580,"owners_count":23969182,"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":[],"created_at":"2024-12-06T17:21:58.314Z","updated_at":"2025-07-23T14:06:41.608Z","avatar_url":"https://github.com/jsulpis.png","language":"Vue","funding_links":[],"categories":["Vue"],"sub_categories":[],"readme":"\u003cspan align=\"center\"\u003e\n  \n\u003ch1\u003eNuxt 3 Template\u003c/h1\u003e\n\u003ch3\u003eOptimized for public websites\u003c/h3\u003e\n\n\u003cp\u003e\n  \n[![CI](https://github.com/jsulpis/nuxt3-template/actions/workflows/ci.yml/badge.svg)](https://github.com/jsulpis/nuxt3-template/actions/workflows/ci.yml)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n\u003c/p\u003e\n\n\u003ca href=\"https://nuxt3-template-jsulpis.vercel.app\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/jsulpis/nuxt3-template/master/preview.jpg\" alt=\"Screenshot of the website\"/\u003e\n\u003c/a\u003e\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fjsulpis%2Fnuxt3-template\u0026demo-title=Nuxt%203%20template\u0026demo-description=Template%20for%20public%20websites\u0026demo-url=https%3A%2F%2Fnuxt3-template-jsulpis.vercel.app\u0026demo-image=https%3A%2F%2Fraw.githubusercontent.com%2Fjsulpis%2Fnuxt3-template%2Fmaster%2Fpreview.jpg)\n\n\u003c/span\u003e\n\n## About\n\nI built this template with all the tools I use in my own personal projects, in order to have a solid starting point for new projects, and hopefully for other developers to benefit from it. I did my best to build the skeleton of what I think is a solid website with proper accessibility, SEO, performance etc.\n\nYou can see this template in action on my [photography portfolio](https://www.jsulpis.photos).\n\nBe aware that this template might quickly become out of date because the web is moving fast !\n\n### Why 'public websites' ?\n\nMy side projects are simple public websites, mostly static, with a few simple APIs (contact, fetch data...). This template is optimized for this kind of project.\n\nIf you are starting something more complex that needs a full backend with database, authentication etc, I suggest that you give a look at [sidebase](https://sidebase.io/).\n\n## Features\n\n**Core**\n\n- [Nuxt 3](https://nuxt.com/), powered by [Vite](https://vitejs.dev/) and [Nitro](https://nitro.unjs.io/) (among others), auto-imports, API routes\n- State management with [Pinia](https://pinia.vuejs.org/) stores\n- [VueUse](https://vueuse.org/) functions\n- Sass theme, functions and mixins for common use cases\n\n**Performance**\n\n- Hybrid rendering: combination of SSG and SSR depending on the routes\n- Cache-Control header pre-configured on API and SSR routes using a Nuxt [server middleware](https://nuxt.com/docs/guide/directory-structure/server#server-middleware)\n- Self-hosted fonts using [Fontsource](https://fontsource.org/)\n- [100% Lighthouse score](https://pagespeed.web.dev/report?url=https%3A%2F%2Fnuxt3-template-jsulpis.vercel.app%2F\u0026hl=fr\u0026form_factor=desktop) on desktop, 97 on mobile\n\n**Static checks**\n\n- Typescript everywhere\n- eslint, prettier\n- pre-commit hook for lint and format\n\n**Testing**\n\n- E2e tests on multiple browsers, desktop and mobile, using [Playwright](https://playwright.dev/)\n- Script that fetches the API data and stores it in local files in order to run the app in \"mock\" mode. It is used for the e2e tests but can be run in standalone, for offline development for instance.\n\n**i18n**\n\n- multiple languages support with the [@nuxtjs/i18n](https://nuxt.com/modules/i18n) module\n- language switch\n- automatic language detection and redirection using [Vercel Edge Middleware](https://vercel.com/docs/concepts/functions/edge-middleware)\n- meta and link tags for SEO (`og:locale`, `hreflang`...)\n\n**SEO**\n\n- meta tags automatically setup for all pages, using titles and descriptions from translation files\n- robots.txt, sitemap.xml\n\n**Accessibility**\n\n- accessible navigation provided by default for desktop and mobile\n- 'Skip navigation' link for keyboard users\n\n**CI / CD**\n\n- GitHub Action workflow pre-configured on PRs and main branch to run all static checks and tests\n- Ready to deploy on Vercel (see the [Deployment](https://github.com/jsulpis/nuxt3-template#deployment) section below)\n\n**Analytics**\n\n- integration of [Plausible](https://plausible.io), which is the only paid service here: you can use something else (or nothing at all), but I chose this one because it is GDPR compliant without the need for a cookie banner, it has a lightweight script, a nice clean UI with only relevant data, and unlimited data retention.\n\n## Installation\n\n**Using GitHub**\n\nClick on the button 'Use this template' at the top of this page.\n\nPlease check 'Include all branches' in order to have the starter branch, which is the pristine template without the demo and documentation.\n\n**Using your terminal**\n\nFetch the starter branch without all the git history:\n\n```shell\nnpx degit jsulpis/nuxt3-template#starter your-project\n```\n\n```shell\ncd your-project \u0026\u0026 pnpm install\n```\n\n## Usage\n\n### Development\n\nStart the development server with hot module replacement:\n\n```bash\npnpm dev\n```\n\nStart in mock mode:\n\n```bash\npnpm dev:mock\n```\n\nSee the other scripts in the `package.json`.\n\n## Deployment\n\nYou can connect Vercel and GitHub to deploy each branch and pull request to their own environment, and the main branch in production:\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fjsulpis%2Fnuxt3-template\u0026demo-title=Nuxt%203%20template\u0026demo-description=Template%20for%20public%20websites\u0026demo-url=https%3A%2F%2Fnuxt3-template-jsulpis.vercel.app\u0026demo-image=https%3A%2F%2Fraw.githubusercontent.com%2Fjsulpis%2Fnuxt3-template%2Fmaster%2Fpreview.jpg)\n\nNote that you should be able to deploy this template on another cloud provider (Nuxt 3 supports [a lot of them](https://nuxt.com/docs/getting-started/deployment#supported-hosting-providers)), but you will have to do the redirection of the users based on their language, which is currently implemented with Vercel Edge Middleware.\n\nCheck out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.\n\n## License\n\nReleased under the [MIT](https://github.com/jsulpis/nuxt3-template/blob/master/LICENSE) license.\n\nAlthough you don't _have_ to, if you reuse this template for your projects I would appreciate if you would add a little note like '_[Nuxt 3](https://nuxt3-template-jsulpis.vercel.app) template by [@jsulpis](https://twitter.com/jsulpis)_' in your footer. Thanks !\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsulpis%2Fnuxt3-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsulpis%2Fnuxt3-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsulpis%2Fnuxt3-template/lists"}