This is a minimal food delivery app build with Nuxt.js and Supabase with its notifications managed with Novu.
To learn more about the technologies used you can visit the following links:
Make sure to install the dependencies:
# yarn
yarn install
# npm
npm install
# pnpm
pnpm installFor the database add the following tables.
-- Create a table for public profiles
create table profiles (
  id uuid references auth.users on delete cascade not null primary key,
  updated_at timestamp with time zone,
  full_name text not null,
  email text unique not null,
  phone text not null,
  address text,
  admin boolean default false,
  avatar_url text,
  constraint phone check (char_length(phone) >= 10)
);
-- Create a table for food orders
create table orders (
  id uuid not null default uuid_generate_v4() primary key,
  updated_at timestamp with time zone,
  created_at timestamp with time zone,
  profile_id uuid references public.profiles on delete cascade not null,
  price float not null,
  discount int default 0,
  final_price float not null,
  paid bool default false,
  delivered bool default false,
  in_transit bool default false,
  delivery_time timestamp with time zone,
  delivery_fee float default 0 not null,
  comment text
);
-- Create a table for dishes
create table dishes (
  id uuid not null generated by default as identity primary key,
  created_at timestamp with time zone,
  name text not null,
  price int not null,
  image text not null,
  ingredients text,
  description text,
  calories text,
);
-- Create a table for food order dishes
create table order_dishes (
  id uuid not null default uuid_generate_v4() primary key,
  updated_at timestamp with time zone,
  order_id uuid references public.orders on delete cascade not null,
  dish_id int references public.dishes on delete cascade not null,
  count int default 1
);
-- Create a table for customer feedback
create table feedback (
  id uuid not null default uuid_generate_v4() primary key,
  updated_at timestamp with time zone,
  order_id uuid references public.orders on delete cascade not null,
  information text
);Rename the loval.env file to .env and populate the empty variables with their respective values.
Start the development server on http://localhost:3000
npm run devBuild the application for production:
npm run buildLocally preview production build:
npm run previewCheck out the deployment documentation for more information.