Giter Club home page Giter Club logo

nuxt3-saas-starter's Introduction

Nuxt 3 SaaS Starter Template

Disclaimer: This template is under active development and is not yet production-ready. We are actively working on the development of this template and highly recommend not using it for your live projects until its completion. For updates, you can follow our progress in the to-do list below.

Features

  • ๐Ÿ’š Nuxt 3 - SSR, ESR, File-based routing, components auto importing, modules, layouts etc.

  • โšก๏ธ Vite - Instant HMR.

  • ๐ŸŽจ Tailwind CSS - The gold standard CSS utility framework

  • ๐Ÿ˜ƒ Nuxthq/ui - elegant nuxt 3 components/icons using Tailwind.

  • ๐Ÿ”ฅ The <script setup> syntax.

  • ๐Ÿ State Management via Pinia, see ./composables/user.ts.

  • ๐ŸŒ Vercel for easy hosting.

  • โš ๏ธ Sentry/Vue for error and performance monitoring.

  • ๐Ÿค‘ Stripe Billing for payments.

  • ๐Ÿ—๏ธ Supabase for Auth, storage, database and realtime needs.

  • ๐Ÿ“– SEO Optimized, unlighthouse included for SEO tracking.

  • ๐Ÿ‘ฎโ€โ™‚๏ธ Data validation, incoming data validated with Zod, forms with vee-validate.

  • ๐Ÿ”’ Secure, uses Nuxt/Security to enhance application security.

  • ๐ŸŒ— light/dark mode.

  • ๐Ÿฆพ TypeScript, of course.

  • ๐Ÿ“ฒ PWA with offline support and auto update behavior.

Nuxt Modules

  • VueUse - collection of useful composition APIs.
  • Images - optimized public/provider images.
  • Partytown - improved website performance by offloading third-party scripts.
  • Security - the instant on-demand atomic CSS engine.
  • Devtools - the instant on-demand atomic CSS engine.
  • Unlighthouse - the instant on-demand atomic CSS engine.
  • Vitest - the instant on-demand atomic CSS engine.
  • Pinia - intuitive, type safe, light and flexible Store for Vue.
  • VitePWA - zero-config PWA Plugin for Nuxt 3.

To-Do List

The following features and improvements are in the works:

  • User Management: Implement various user account functionalities, including social sign-on options and password recovery.
  • Database Management: Configure Schema Management and Database Management systems with Supabase.
  • Config Management: Set up configuration for Stripe Keys and environment keys for Supabase and Stripe.
  • State Management: Develop management for Single Page Application (SPA) and Server-Side Rendering (SSR) page types using Pinia.
  • Team Accounts: Implement functionality for upgrading individual accounts to multi-user (team) accounts, account switching, and team administration.
  • User profile and settings management: Allow users to update email address, password, other account details and settings
  • Notification system:
  • Search functionality
  • Rate limit APIs:
  • Schema and DB management: This is done through supabase
  • Plans and Pricing: Develop the management of multiple plans, each with distinct features and limits.
  • Stripe Payments: Integrate with Stripe for subscription payments and handle multiple payment-related events.
  • Support: Include a ticketing system, live chat, FAQs, and tutorials.
  • UI and Customization: Develop a default UI, integrate a design system with theming, toasts, and modals using TailwindCSS.
  • Testing: Provide manual test scenarios, unit tests, and integration tests using Vitest.
  • Documentation: Create documentation and video course

Initial Setup

  1. Environment Variables: Duplicate the example.env file and rename it to .env.
  2. Supabase: Set up Supabase for Authentication and Database functionalities.
  3. Stripe: Set up Stripe for Subscription payments.

Upcoming Content

Stay tuned for expansive documentation and a video course covering in-depth details of the project. This course will be available for a nominal fee, providing you with a comprehensive understanding of the starter template and how you can maximize its potential.

Externals Setup

Below are some additional setup tasks that are not directly related to code:

  • Environment Variables: Create a .env file from the .env_example. This file is for development convenience, is .gitignored by default, and should not be added to source control.
  • Supabase: Follow the instructions to set up Supabase, an essential part of this solution for Auth and DB management.
  • Stripe: Stripe is used for Subscription payments. You will need to set up your Stripe business and create products ('Team Plan' and 'Individual Plan') each with a single price.

Database Setup

Please note that there might be additional setup tasks for the database using Supabase.

Development Setup

Install dependencies using your preferred package manager:

npm install

Starting the Development Server

You can start the development server on http://localhost:3000 with the following command:

npm run dev

Building for Production

To build the application for production, run:

npm run build

Previewing the Production Build

You can preview the production build locally with:

npm run preview

Deployment to Vercel

The deployment process is entirely in your hands, but we recommend Vercel due to its ease of use and compatibility with Nuxt.js. Below are some general steps to deploy your application to Vercel:

  • Sign up or log in to Vercel using your GitHub account.
  • Create a new project and import from your repository.
  • Configure the environment variables as per your .env_example file.
  • Vercel will automatically detect the Nuxt app and select appropriate settings.
  • Apply a custom domain name, if required.

Remember to also update your Supabase configuration to reflect your new Vercel URL.

nuxt3-saas-starter's People

Contributors

dependabot[bot] avatar drew-macgibbon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

nuxt3-saas-starter's Issues

seo | switch from css @imports to <link>

CSS @import is the process of calling stylesheets/CSS files from within another CSS file.

This method causes the browser to load each CSS file sequentially, rather than in parallel. Since CSS is render-blocking, by default, this is likely to affect page performance.

Avoid using CSS @import to speed up your page load and improve your visitors' page experience.

feat: incremental adoption of features

I can probably create a group on env vars for things like Sentry that can be toggled true/false.

This will make the template easier to start, as you can add features as needed.

feat: add testing for all API routes and main user flows

Firstly I need to decide if I need to use Vitest at all, or if I should just go with Checkly, which has native integration with Vercel and uses playwright.

I'm leaning towards Checkly, but need to do more research to figure out if it will cover all of our needs.

feat: blog using nuxt/content

This starter template is for development teams, so it makes sense to go with a markdown blog to give maximum control.

I will also create some markdown components MDC to make it have a more custom look.

feat: add drizzle-orm for faster db queries

After doing some research into ORM's, Drizzle stands out because it lets you essentially write SQL queries as they should be.

Prisma, although popular, is much slower and the supabase-js option isn't robust enough at this time.

Drizzle also makes DB migrations a breeze, has type generation for your schema, and a Zod module that allows for validation inference based on the schema. This will reduce my codebase significantly and make validation much easier.

If I migrate most of my supabase requests to the server, I will likely only rely on supabase-js for auth.

video explaining integration with supabase: https://www.youtube.com/watch?v=k0uC35J_xJ4&ab_channel=Rajtalkstech

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.