├── frontend ├── public │ ├── robots.txt │ ├── img │ │ └── icon.png │ ├── manifest.json │ └── favicon.svg ├── server │ ├── package.json │ ├── entry.ssr.js │ ├── entry.express.js │ ├── @qwik-city-static-paths.js │ ├── @qwik-city-not-found-paths.js │ ├── entry.express.mjs │ ├── @qwik-city-plan.mjs │ ├── assets │ │ └── root-7ec1d247.mjs │ └── entry.ssr.mjs ├── .DS_Store ├── src │ ├── .DS_Store │ ├── routes │ │ ├── .DS_Store │ │ ├── login │ │ │ ├── .DS_Store │ │ │ ├── staging │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── terms │ │ │ └── index.tsx │ │ ├── disclaimer │ │ │ └── index.tsx │ │ ├── privacy │ │ │ └── index.tsx │ │ ├── contact │ │ │ └── index.tsx │ │ ├── layout-site.tsx │ │ ├── about │ │ │ └── index@site.tsx │ │ ├── services │ │ │ └── index@site.tsx │ │ ├── shop │ │ │ └── index@site.tsx │ │ ├── service-worker.ts │ │ ├── index@site.tsx │ │ ├── members │ │ │ └── dashboard │ │ │ │ └── index.tsx │ │ └── signup │ │ │ └── index.tsx │ ├── components │ │ ├── site │ │ │ ├── logo │ │ │ │ ├── logo.css │ │ │ │ └── logo.tsx │ │ │ ├── hero │ │ │ │ └── hero.tsx │ │ │ ├── footer │ │ │ │ └── footer.tsx │ │ │ └── navigation │ │ │ │ └── navigation.tsx │ │ ├── ui │ │ │ ├── button-std.tsx │ │ │ ├── button-action.tsx │ │ │ └── message.tsx │ │ ├── router-head │ │ │ └── router-head.tsx │ │ └── svgs │ │ │ └── grid.tsx │ ├── utils │ │ ├── supabase.ts │ │ └── helpers.ts │ ├── global.css │ ├── entry.dev.tsx │ ├── entry.preview.tsx │ ├── entry.ssr.tsx │ ├── entry.express.tsx │ └── root.tsx ├── .prettierignore ├── postcss.config.js ├── tailwind.config.js ├── .eslintignore ├── vite.config.ts ├── adaptors │ └── express │ │ └── vite.config.ts ├── tsconfig.json ├── README.md ├── .eslintrc.cjs └── package.json ├── .gitignore ├── .DS_Store ├── proxy ├── Dockerfile └── nginx.conf └── backend ├── package.json ├── server.ts └── yarn.lock /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/server/package.json: -------------------------------------------------------------------------------- 1 | {"type":"module"} -------------------------------------------------------------------------------- /frontend/server/entry.ssr.js: -------------------------------------------------------------------------------- 1 | export * from "./entry.ssr.mjs"; -------------------------------------------------------------------------------- /frontend/server/entry.express.js: -------------------------------------------------------------------------------- 1 | export * from "./entry.express.mjs"; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /frontend/node_modules 2 | /backend/node_modules 3 | /frontend/dist 4 | *.env -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderaidershaun/qwik-supabase-nginx-project/HEAD/.DS_Store -------------------------------------------------------------------------------- /frontend/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderaidershaun/qwik-supabase-nginx-project/HEAD/frontend/.DS_Store -------------------------------------------------------------------------------- /frontend/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderaidershaun/qwik-supabase-nginx-project/HEAD/frontend/src/.DS_Store -------------------------------------------------------------------------------- /frontend/.prettierignore: -------------------------------------------------------------------------------- 1 | # Files Prettier should not format 2 | **/*.log 3 | **/.DS_Store 4 | *. 5 | dist 6 | node_modules 7 | -------------------------------------------------------------------------------- /frontend/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /frontend/public/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderaidershaun/qwik-supabase-nginx-project/HEAD/frontend/public/img/icon.png -------------------------------------------------------------------------------- /frontend/src/routes/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderaidershaun/qwik-supabase-nginx-project/HEAD/frontend/src/routes/.DS_Store -------------------------------------------------------------------------------- /frontend/src/routes/login/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coderaidershaun/qwik-supabase-nginx-project/HEAD/frontend/src/routes/login/.DS_Store -------------------------------------------------------------------------------- /proxy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:latest 2 | 3 | COPY nginx.conf /etc/nginx/nginx.conf 4 | 5 | EXPOSE 80/tcp 6 | 7 | CMD ["/usr/sbin/nginx", "-g", "daemon off;"] 8 | -------------------------------------------------------------------------------- /frontend/src/components/site/logo/logo.css: -------------------------------------------------------------------------------- 1 | .logo-title { 2 | font-weight: 350; 3 | font-stretch: 125%; 4 | } 5 | 6 | .logo-subtitle { 7 | font-weight: 400; 8 | font-stretch: 95%; 9 | } 10 | -------------------------------------------------------------------------------- /frontend/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | }; 9 | -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/web-manifest-combined.json", 3 | "name": "qwik-project-name", 4 | "short_name": "Welcome to Qwik", 5 | "start_url": ".", 6 | "display": "standalone", 7 | "background_color": "#fff", 8 | "description": "A Qwik project app." 9 | } 10 | -------------------------------------------------------------------------------- /frontend/src/routes/terms/index.tsx: -------------------------------------------------------------------------------- 1 | import { component$ } from '@builder.io/qwik'; 2 | import type { DocumentHead } from "@builder.io/qwik-city"; 3 | 4 | export default component$(() => { 5 | return
404 Resource Not Found
\n\n" 5 | ] 6 | ]; 7 | function getNotFound(p) { 8 | for (const r of notFounds) { 9 | if (p.startsWith(r[0])) { 10 | return r[1]; 11 | } 12 | } 13 | return "Resource Not Found"; 14 | } 15 | export { getNotFound }; -------------------------------------------------------------------------------- /frontend/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | es2021: true, 6 | node: true, 7 | }, 8 | extends: [ 9 | 'eslint:recommended', 10 | 'plugin:@typescript-eslint/recommended', 11 | 'plugin:qwik/recommended', 12 | ], 13 | parser: '@typescript-eslint/parser', 14 | parserOptions: { 15 | tsconfigRootDir: __dirname, 16 | project: ['./tsconfig.json'], 17 | ecmaVersion: 2021, 18 | sourceType: 'module', 19 | ecmaFeatures: { 20 | jsx: true, 21 | }, 22 | }, 23 | plugins: ['@typescript-eslint'], 24 | rules: { 25 | '@typescript-eslint/no-explicit-any': 'off', 26 | '@typescript-eslint/explicit-module-boundary-types': 'off', 27 | '@typescript-eslint/no-inferrable-types': 'off', 28 | '@typescript-eslint/no-non-null-assertion': 'off', 29 | '@typescript-eslint/no-empty-interface': 'off', 30 | '@typescript-eslint/no-namespace': 'off', 31 | '@typescript-eslint/no-empty-function': 'off', 32 | '@typescript-eslint/no-this-alias': 'off', 33 | '@typescript-eslint/ban-types': 'off', 34 | '@typescript-eslint/ban-ts-comment': 'off', 35 | 'prefer-spread': 'off', 36 | 'no-case-declarations': 'off', 37 | 'no-console': 'off', 38 | '@typescript-eslint/no-unused-vars': ['error'], 39 | }, 40 | }; 41 | -------------------------------------------------------------------------------- /frontend/src/components/site/hero/hero.tsx: -------------------------------------------------------------------------------- 1 | import { component$ } from "@builder.io/qwik"; 2 | import { ButtonStd } from "~/components/ui/button-std"; 3 | import { Link } from "@builder.io/qwik-city"; 4 | 5 | export const Hero = component$(() => { 6 | return ( 7 |76 | Or{" "} 77 | 81 | create an account 82 | 83 |
84 |86 | Or{" "} 87 | 91 | log in to my account 92 | 93 |
94 |${e} ${t}
${n?` 18 |${n}`:""}
19 |
20 | `}var we="#006ce9",be="#713fc2";function ve(e,t){const{pendingBody:n,resolvedBody:o,status:s,headers:i,cookie:r}=t,{response:l}=e;if(n===void 0&&o===void 0)return l(s,i,r,Se);i.has("Content-Type")||i.set("Content-Type","application/json; charset=utf-8");const a=i.get("Content-Type").includes("json");return l(s,i,r,async({write:c})=>{const d=n!==void 0?await n:o;if(d!==void 0)if(a)c(JSON.stringify(d));else{const u=typeof d;c(u==="string"?d:u==="number"||u==="boolean"?String(d):d)}})}var Se=async()=>{},R=class{constructor(e,t,n,o){this.url=e,this.location=e,this.status=X(t)?t:302,this.headers=n??A(),this.headers.set("Location",this.location),this.headers.delete("Cache-Control"),this.cookies=o??new T}};function ke(e,t){return e.response(t.status,t.headers,t.cookies,async()=>{})}function X(e){return typeof e=="number"&&e>=301&&e<=308}function xe(e){if(JSON.stringify(e),!$(e))throw new Error("Unable to serialize value.")}function $(e){if(e==null||typeof e=="string"||typeof e=="boolean"||typeof e=="number")return!0;if(Array.isArray(e)){for(const t of e)if(!$(t))return!1;return!0}if(e.constructor==null||e.constructor===Object){for(const t in e)if(!$(e[t]))return!1;return!0}return!1}async function Ee(e,t,n,o,s="/"){if(n.length===0)throw new O(404,"Not Found");const{request:i,url:r,platform:l}=e,{pathname:a}=r,{method:c,headers:d}=i,u=Oe(n),h=u&&a.endsWith(D),p=!h&&Ae(c,d.get("Accept"),d.get("Content-Type")),w=new T(d.get("cookie")),f={type:h?"pagedata":u&&!p?"pagehtml":"endpoint",url:r,params:t,status:200,headers:A(),resolvedBody:void 0,pendingBody:void 0,cookie:w,aborted:!1};let P=!1;if(u&&!h&&a!==s&&!a.endsWith(".html")){if(o){if(!a.endsWith("/"))throw new R(a+"/"+r.search,302)}else if(a.endsWith("/"))throw new R(a.slice(0,a.length-1)+r.search,302)}let b=-1;const Z=()=>{b=U},j=async()=>{for(b++;b