‹ Prev | Next ›

App Features

The Starter App is meant to be more than just a simple boilerplate. The main idea is to provide full base functionality for features and issues that will quickly arise as the app starts to grow. It also comes as 2 in 1 app and admin with some standard sample CRUD out of the box.

The app outlined in the features below is a completely separate codebase from the API. Though the Starter App is designed for the Starter API it is not required and both the App and API can be used separately.

The only currently available version of the Starter App is a Vue 3 SPA. Support for React, Next, Nuxt, etc may come later depending on interest and demand.

Demos:

Yarn Cross Env

The Starter App is set up with Yarn for it's cross env support which allows multiple sub projects within the same repo. This makes for better organization of separate "app" and "admin" projects along with a "shared" common folder for reusability. Additional sub projects can then be added as needed, quickly and easily.

Vite

Vite has pretty much become the de facto build tool for Vue 3. It comes with a solid dev server & near instant hot reload. It is also comes with a great set of plugins such as svgLoader, tailwindcss and vueDevTools which are included in the Starter.

TypeScript

As TypeScript becomes increasingly more common it has been used for the Starter as well. Though there may be some arguments for it's usefullness in smaller starter type projects, it's so easy to learn that it really makes little sense to not use it at this point compared to the benefits it provides.

Component Libraries

The default component library used in the Starter is PrimeVue 4, mainly since it has been well supported for a long time and continues to grow and transition with changes to front end dev. Version 4 supports layers, presets, tailwind integration and much more making it very easy to fully customize. With that said the Starter App takes a very modular approach to components with hot swap functionality in mind. Support for Reka UI and potentially other component libraries will be coming soon.

Tailwind

Like TypeScript, Tailwind is becoming a bit of a de facto standard and quite hard to live without once you've used it. The start App comes with Tailwind 4 out of the box and also includes some examples on how to manually include classes which are used dynamically via props.

Mobile Friendly

The Starter App is built with mobile in mind and works great in all screen sizes.

Icons

Using icons should be simple but tends to be a bit of a pain point for easy customization. The Starter App is setup with the svgLoader plugin which autoloads icons placed in an icons directory on demand. This gives you full control for the icons used which can then be pulled from multiple icon libaries as needed.

Composables

A very simple composable/api approach is taken in the Starter APP which tries to keep things in very small resuable units of logic. It also comes with a handy reusable useApi composable for interacting with APIs containing commong logic for handling state and data with an option to persist the data in a store or leave it as single use.

Stores

The stores are compeltely isolated from the rest of the app logic and strictly used for storage. In the Starter App they should be thought of as mini localized copies of the database with specific operations for manipulating that data and do not directly interact with the API. This makes them much easier to consume with other composables that talk to the API in various ways (you can read more about this decions based on this article here).

I18n

Support for multiple languages with preload ships out of the box in the Starter App. It supports 3 levels of separation which means language files can be loaded as needed at the site, layout and page level. There is also integration with route interceptors to trigger and detect when these language files are loaded which can then be used to trigger site loaders and page transitions making for a much smoother user experience.

Config

Support for app config which combines local config at the app level with config pulled from the api is also available. This typically will load only once at the beginning of the app and can also then be integrated with initial app loaders.

Layouts & Page Transitions

The Starter comes with a few common layouts out of the box. One is the the "center" layout, useful for auth login and register type pages. A second is the standard "header/body/footer" layout with an optional "aside". There is also <router-view> integration with the various site loaders to make for smooth page transitions as async content is loaded on demand.

App Preload

With every SPA app there can be a slight delay where a blank page shows up while the initial app.js is loaded. There can also be a bit of a dark/light mode flicker depending on the initial settings there as well. The Starter App handles all of this gracefully with some Cover components and a tiny bit of hardcoding in the index.html which makes for a seamless smooth load every time.

Maintenance / Reload

Support for maintenance mode and version updates requiring a refresh is also setup and available out of the box. This is done via specific error codes from the api which are checked for in http intercepts and can be changed to whatever the API being consumed supports.

Authorization

The standard set of auth pages and actions are also included out of the box. This includes login, register with auto login option, account activation and resend and finally, password reset and update.

Account

The standard set of account update features are also included out of the box. This includes avatar update and delete, profile info update along with locale and timezone selection.

Billing & Subscriptions

There are also some basic features for billing including credit card update and delete. As well some basic subscription signup with feature unlocks which in the sample app gives access to more todo lists that can be created.

Notifications

The app of course would not be complete with some basic notifications functionality. This is also built in to the initial version as a slide out drawer which makes it easier access and perform operations on the notifications as a single or whole.

Dark / Light Mode

Of course where would be in this day and age without a dark/light mode switcher. The toggle is designed to initially load the preset from the user's browser. From there if a manual swap is made via the controls it will then stick with that choice.

Sorting

It is quite common for apps to include some sorting feature at some poing. A sample of this has been provided with tasks sorting in the sample code via the SortableJs library.

Sample CRUD

The Starter also ships with a basic todo / task CRUD that provides a sample of the standard setup for routes, pages, stores, composable to fetch and display data from the api. This servers as a basic outline that can be repeated for much of any app.

Admin

On top of all the above there is also a full fledged admin app. It comes with a basic user and todo CRUD which shows all users and todos in the system. These basic admin pages also come with search and filtering making it easy to find particular items as well as being able to view individual users and todos allowing admins to drill down on specific administrative tasks for those items.

© Websanova 2025