├── netlify.toml ├── bun.lockb ├── app ├── favicon.ico ├── assets │ ├── stars.png │ ├── avatar-1.png │ ├── avatar-2.png │ ├── avatar-3.png │ ├── avatar-4.png │ ├── grid-lines.png │ ├── logo-acme.png │ ├── logo-apex.png │ ├── logo-echo.png │ ├── logo-pulse.png │ ├── logo-quantum.png │ ├── product-image.png │ ├── logo-celestial.png │ ├── logo.svg │ ├── icon-guage.svg │ ├── icon-stars.svg │ ├── icon-click.svg │ ├── icon-menu.svg │ ├── social-x.svg │ ├── social-youtube.svg │ └── social-instagram.svg ├── fonts │ ├── GeistVF.woff │ └── GeistMonoVF.woff ├── api │ ├── auth │ │ ├── [...nextauth] │ │ │ └── route.ts │ │ └── route.ts │ ├── uploadthing │ │ ├── route.ts │ │ └── core.ts │ └── oauth │ │ └── exchange │ │ └── route.ts ├── lib │ ├── hooks.ts │ ├── auth.ts │ ├── uploadthing.ts │ ├── db.ts │ ├── nylas.ts │ ├── times.ts │ └── zodSchemas.ts ├── components │ ├── landingPage │ │ ├── AuthButton.tsx │ │ ├── girdtabs.tsx │ │ ├── animation-container.tsx │ │ ├── LampDiv.tsx │ │ ├── Cards │ │ │ ├── cardsfeatures.tsx │ │ │ ├── features-list.tsx │ │ │ ├── icons.tsx │ │ │ └── feature-card.tsx │ │ ├── Cta.tsx │ │ ├── ui │ │ │ └── marquee.tsx │ │ ├── AuthModal.tsx │ │ ├── Newsletter.tsx │ │ ├── Cards.tsx │ │ ├── Logos.tsx │ │ ├── Reviews.tsx │ │ ├── Tools.tsx │ │ ├── offerings.tsx │ │ └── Stats.tsx │ ├── dashboard │ │ ├── ThemeProvider.tsx │ │ ├── CopyLinkMenuItem.tsx │ │ ├── EmptyState.tsx │ │ ├── EventTypeSwitcher.tsx │ │ ├── ThemeToggle.tsx │ │ ├── DasboardLinks.tsx │ │ └── settingsForm.tsx │ ├── demo │ │ ├── CalendarButton.tsx │ │ ├── Calendar.tsx │ │ ├── RenderCalendar.tsx │ │ ├── CalendarHeader.tsx │ │ ├── CalendarGrid.tsx │ │ └── CalendarCell.tsx │ └── SubmitButton.tsx ├── utils │ └── colors.ts ├── test │ └── page.tsx ├── dashboard │ ├── settings │ │ └── page.tsx │ ├── event │ │ └── [eventTypeId] │ │ │ ├── page.tsx │ │ │ └── delete │ │ │ └── page.tsx │ ├── availability │ │ └── page.tsx │ ├── meetings │ │ └── page.tsx │ └── layout.tsx ├── layout.tsx ├── onboarding │ ├── grant-id │ │ └── page.tsx │ └── page.tsx ├── page.tsx ├── success │ └── page.tsx └── globals.css ├── public ├── canva.png ├── face.jpeg ├── hero.png ├── logo.png ├── meet.png ├── teams.png ├── ailogo.png ├── better.png ├── heroimg.png ├── nylas-logo.png ├── scheduling.png ├── assests │ ├── logo.png │ ├── tube.png │ ├── Visual.png │ ├── flare.png │ ├── pyramid.png │ ├── avatar-1.png │ ├── avatar-2.png │ ├── avatar-3.png │ ├── avatar-4.png │ ├── avatar-5.png │ ├── avatar-6.png │ ├── avatar-7.png │ ├── avatar-8.png │ ├── avatar-9.png │ ├── cylinder.png │ ├── helix2 1.png │ ├── logo-acme.png │ ├── logo-apex.png │ ├── logo-echo.png │ ├── cube-helix 1.png │ ├── cube-helix.png │ ├── emojistar 1.png │ ├── half-torus.png │ ├── logo-pulse.png │ ├── logo-quantum.png │ ├── Product Image.png │ └── logo-celestial.png ├── scheduling2.png ├── scheduling3.png ├── dashboard-new.png ├── typescript-logo.png ├── work-is-almost-over-happy.gif ├── google.svg ├── vercel.svg ├── github.svg ├── producthunt.svg ├── nextjs-logo.svg └── supabase.svg ├── .vscode └── settings.json ├── postcss.config.mjs ├── lib ├── utils.ts └── prisma.ts ├── .eslintrc.json ├── components.json ├── .gitignore ├── .github └── workflows │ ├── npm-grunt.yml │ └── generator-generic-ossf-slsa3-publish.yml ├── next.config.mjs ├── components └── ui │ ├── label.tsx │ ├── textarea.tsx │ ├── input.tsx │ ├── separator.tsx │ ├── sonner.tsx │ ├── ButtonGroup.tsx │ ├── animated-gradient-text.tsx │ ├── animated-shiny-text.tsx │ ├── gradual-spacing.tsx │ ├── tooltip.tsx │ ├── switch.tsx │ ├── badge.tsx │ ├── avatar.tsx │ ├── border-beam.tsx │ ├── number-ticker.tsx │ ├── word-pull-up.tsx │ ├── letter-pullup.tsx │ ├── button.tsx │ ├── spotlight.tsx │ ├── card.tsx │ ├── flip-words.tsx │ ├── calendar.tsx │ ├── card-hover-effect.tsx │ ├── dialog.tsx │ ├── lamp.tsx │ └── sheet.tsx ├── tsconfig.json ├── ai.tsx ├── README.md ├── package.json ├── tailwind.config.ts └── prisma └── schema.prisma /netlify.toml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/bun.lockb -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /public/canva.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/canva.png -------------------------------------------------------------------------------- /public/face.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/face.jpeg -------------------------------------------------------------------------------- /public/hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/hero.png -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/logo.png -------------------------------------------------------------------------------- /public/meet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/meet.png -------------------------------------------------------------------------------- /public/teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/teams.png -------------------------------------------------------------------------------- /public/ailogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/ailogo.png -------------------------------------------------------------------------------- /public/better.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/better.png -------------------------------------------------------------------------------- /public/heroimg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/heroimg.png -------------------------------------------------------------------------------- /app/assets/stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/stars.png -------------------------------------------------------------------------------- /public/nylas-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/nylas-logo.png -------------------------------------------------------------------------------- /public/scheduling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/scheduling.png -------------------------------------------------------------------------------- /app/assets/avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/avatar-1.png -------------------------------------------------------------------------------- /app/assets/avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/avatar-2.png -------------------------------------------------------------------------------- /app/assets/avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/avatar-3.png -------------------------------------------------------------------------------- /app/assets/avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/avatar-4.png -------------------------------------------------------------------------------- /app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /public/assests/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo.png -------------------------------------------------------------------------------- /public/assests/tube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/tube.png -------------------------------------------------------------------------------- /public/scheduling2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/scheduling2.png -------------------------------------------------------------------------------- /public/scheduling3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/scheduling3.png -------------------------------------------------------------------------------- /app/assets/grid-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/grid-lines.png -------------------------------------------------------------------------------- /app/assets/logo-acme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/logo-acme.png -------------------------------------------------------------------------------- /app/assets/logo-apex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/logo-apex.png -------------------------------------------------------------------------------- /app/assets/logo-echo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/logo-echo.png -------------------------------------------------------------------------------- /app/assets/logo-pulse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/logo-pulse.png -------------------------------------------------------------------------------- /app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /public/assests/Visual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/Visual.png -------------------------------------------------------------------------------- /public/assests/flare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/flare.png -------------------------------------------------------------------------------- /public/assests/pyramid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/pyramid.png -------------------------------------------------------------------------------- /public/dashboard-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/dashboard-new.png -------------------------------------------------------------------------------- /public/typescript-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/typescript-logo.png -------------------------------------------------------------------------------- /app/assets/logo-quantum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/logo-quantum.png -------------------------------------------------------------------------------- /app/assets/product-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/product-image.png -------------------------------------------------------------------------------- /public/assests/avatar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-1.png -------------------------------------------------------------------------------- /public/assests/avatar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-2.png -------------------------------------------------------------------------------- /public/assests/avatar-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-3.png -------------------------------------------------------------------------------- /public/assests/avatar-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-4.png -------------------------------------------------------------------------------- /public/assests/avatar-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-5.png -------------------------------------------------------------------------------- /public/assests/avatar-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-6.png -------------------------------------------------------------------------------- /public/assests/avatar-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-7.png -------------------------------------------------------------------------------- /public/assests/avatar-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-8.png -------------------------------------------------------------------------------- /public/assests/avatar-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/avatar-9.png -------------------------------------------------------------------------------- /public/assests/cylinder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/cylinder.png -------------------------------------------------------------------------------- /public/assests/helix2 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/helix2 1.png -------------------------------------------------------------------------------- /public/assests/logo-acme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo-acme.png -------------------------------------------------------------------------------- /public/assests/logo-apex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo-apex.png -------------------------------------------------------------------------------- /public/assests/logo-echo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo-echo.png -------------------------------------------------------------------------------- /app/assets/logo-celestial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/app/assets/logo-celestial.png -------------------------------------------------------------------------------- /public/assests/cube-helix 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/cube-helix 1.png -------------------------------------------------------------------------------- /public/assests/cube-helix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/cube-helix.png -------------------------------------------------------------------------------- /public/assests/emojistar 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/emojistar 1.png -------------------------------------------------------------------------------- /public/assests/half-torus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/half-torus.png -------------------------------------------------------------------------------- /public/assests/logo-pulse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo-pulse.png -------------------------------------------------------------------------------- /public/assests/logo-quantum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo-quantum.png -------------------------------------------------------------------------------- /public/assests/Product Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/Product Image.png -------------------------------------------------------------------------------- /public/assests/logo-celestial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/assests/logo-celestial.png -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "WillLuke.nextjs.addTypesOnSave": true, 3 | "WillLuke.nextjs.hasPrompted": true 4 | } -------------------------------------------------------------------------------- /public/work-is-almost-over-happy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duggal1/dayflow/HEAD/public/work-is-almost-over-happy.gif -------------------------------------------------------------------------------- /app/api/auth/[...nextauth]/route.ts: -------------------------------------------------------------------------------- 1 | import { handlers } from "@/app/lib/auth"; 2 | 3 | export const { GET, POST } = handlers; 4 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /app/lib/hooks.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from "next/navigation"; 2 | import { auth } from "./auth"; 3 | 4 | export async function requireUser() { 5 | const session = await auth(); 6 | 7 | if (!session?.user?.id) { 8 | return redirect("/"); 9 | } 10 | 11 | return session; 12 | } 13 | -------------------------------------------------------------------------------- /app/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"], 3 | "rules": { 4 | "@typescript-eslint/no-unused-vars": "warn", // Change to 'error' if you want it to be an error 5 | "react-hooks/exhaustive-deps": "warn" // Change to 'error' if you want it to be an error 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/components/landingPage/AuthButton.tsx: -------------------------------------------------------------------------------- 1 | import { AuthModal } from "./AuthModal"; 2 | export function AuthButton() { 3 | return ( 4 | 5 | 6 |
7 | 8 | 9 |
10 | 11 | ); 12 | } -------------------------------------------------------------------------------- /app/lib/auth.ts: -------------------------------------------------------------------------------- 1 | import NextAuth from "next-auth"; 2 | import GitHub from "next-auth/providers/github"; 3 | import prisma from "./db"; 4 | import { PrismaAdapter } from "@auth/prisma-adapter"; 5 | 6 | export const { handlers, signIn, signOut, auth } = NextAuth({ 7 | adapter: PrismaAdapter(prisma), 8 | 9 | providers: [GitHub], 10 | }); 11 | -------------------------------------------------------------------------------- /app/api/uploadthing/route.ts: -------------------------------------------------------------------------------- 1 | import { createRouteHandler } from "uploadthing/next"; 2 | 3 | import { ourFileRouter } from "./core"; 4 | 5 | // Export routes for Next App Router 6 | export const { GET, POST } = createRouteHandler({ 7 | router: ourFileRouter, 8 | 9 | // Apply an (optional) custom config: 10 | // config: { ... }, 11 | }); 12 | -------------------------------------------------------------------------------- /app/lib/uploadthing.ts: -------------------------------------------------------------------------------- 1 | import { 2 | generateUploadButton, 3 | generateUploadDropzone, 4 | } from "@uploadthing/react"; 5 | 6 | import type { OurFileRouter } from "@/app/api/uploadthing/core"; 7 | 8 | export const UploadButton = generateUploadButton(); 9 | export const UploadDropzone = generateUploadDropzone(); 10 | -------------------------------------------------------------------------------- /app/api/auth/route.ts: -------------------------------------------------------------------------------- 1 | import { nylas, nylasConfig } from "@/app/lib/nylas"; 2 | import { redirect } from "next/navigation"; 3 | 4 | export async function GET() { 5 | const authUrl = nylas.auth.urlForOAuth2({ 6 | clientId: nylasConfig.clientId as string, 7 | redirectUri: nylasConfig.callbackUri, 8 | }); 9 | return redirect(authUrl); 10 | } 11 | -------------------------------------------------------------------------------- /app/components/dashboard/ThemeProvider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import { ThemeProvider as NextThemesProvider } from "next-themes"; 5 | import { type ThemeProviderProps } from "next-themes/dist/types"; 6 | 7 | export function ThemeProvider({ children, ...props }: ThemeProviderProps) { 8 | return {children}; 9 | } 10 | -------------------------------------------------------------------------------- /app/utils/colors.ts: -------------------------------------------------------------------------------- 1 | export const StargateColors = { 2 | primary: "linear-gradient(90deg, #f72585, #7209b7)", 3 | 4 | secondary: "linear-gradient(90deg, #ff00ff, #800080)", // Fuchsia to Purple 5 | grey: "#656f7e", 6 | black: "#09090b", 7 | darkBg: "#262626", 8 | white: "#FFFFFF", 9 | lightBg: "#d9d9d9", 10 | lightGrey: "#f2f2f2", 11 | darker: "#e340bf", 12 | lighter: "#a440e3", 13 | }; // Blue to Cyan 14 | -------------------------------------------------------------------------------- /app/lib/db.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prismaClientSingleton = () => { 4 | return new PrismaClient(); 5 | }; 6 | 7 | declare const globalThis: { 8 | prismaGlobal: ReturnType; 9 | } & typeof global; 10 | 11 | const prisma = globalThis.prismaGlobal ?? prismaClientSingleton(); 12 | 13 | export default prisma; 14 | 15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma; 16 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "app/globals.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | } 20 | } -------------------------------------------------------------------------------- /lib/prisma.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prismaClientSingleton = () => { 4 | return new PrismaClient(); 5 | }; 6 | 7 | type PrismaClientSingleton = ReturnType; 8 | 9 | const globalForPrisma = globalThis as unknown as { 10 | prisma: PrismaClientSingleton | undefined; 11 | }; 12 | 13 | const prisma = globalForPrisma.prisma ?? prismaClientSingleton(); 14 | 15 | export default prisma; 16 | 17 | if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | .env 31 | 32 | # vercel 33 | .vercel 34 | 35 | # typescript 36 | *.tsbuildinfo 37 | next-env.d.ts 38 | -------------------------------------------------------------------------------- /app/assets/icon-guage.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/workflows/npm-grunt.yml: -------------------------------------------------------------------------------- 1 | name: NodeJS with Grunt 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | pull_request: 7 | branches: [ "main" ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [18.x, 20.x, 22.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | 25 | - name: Build 26 | run: | 27 | npm install 28 | grunt 29 | -------------------------------------------------------------------------------- /app/components/landingPage/girdtabs.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import Tabs from '@/app/components/Tabs'; 4 | import { Cover } from '@/components/ui/cover'; 5 | 6 | const GridTabs = () => { 7 | return ( 8 |
9 |
10 |

11 | The Solutions 12 | We Offers 13 |

14 | 15 |
16 |
17 | ); 18 | } 19 | 20 | export default GridTabs; 21 | 22 | -------------------------------------------------------------------------------- /app/lib/nylas.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-unused-vars */ 2 | import Nylas from "nylas"; 3 | 4 | export const nylasConfig = { 5 | clientId: process.env.NYLAS_CLIENT_ID, 6 | callbackUri: process.env.NEXT_PUBLIC_URL + "/api/oauth/exchange", 7 | apiKey: process.env.NYLAS_API_SECRET_KEY, 8 | apiUri: process.env.NYLAS_API_URL, 9 | }; 10 | 11 | export const nylas = new Nylas({ 12 | apiKey: process.env.NYLAS_API_SECRET_KEY!, 13 | apiUri: process.env.NYLAS_API_URL, 14 | }); 15 | 16 | // Export AuthConfig if it's needed elsewhere in your application 17 | export const AuthConfig = { 18 | clientId: process.env.NYLAS_CLIENT_ID as string, 19 | redirectUri: "http://localhost:3000/oauth/exchange", 20 | }; -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | import { fileURLToPath } from 'url'; 2 | import { dirname } from 'path'; 3 | 'build/types/**/*.ts' 4 | 5 | /** @type {import('next').NextConfig} */ 6 | const nextConfig = { 7 | 8 | experimental: { 9 | outputFileTracingRoot: dirname(fileURLToPath(import.meta.url)), // Use this to get the directory name 10 | }, 11 | images: { 12 | remotePatterns: [ 13 | { hostname: "avatar.vercel.sh", port: "", protocol: "https" }, 14 | { hostname: "utfs.io", port: "", protocol: "https" }, 15 | { hostname: "avatars.githubusercontent.com", port: "", protocol: "https" }, 16 | ], 17 | }, 18 | distDir: 'build', // Netlify can cache this directory 19 | }; 20 | 21 | export default nextConfig; 22 | -------------------------------------------------------------------------------- /app/assets/icon-stars.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as LabelPrimitive from "@radix-ui/react-label" 5 | import { cva, type VariantProps } from "class-variance-authority" 6 | 7 | import { cn } from "@/lib/utils" 8 | 9 | const labelVariants = cva( 10 | "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" 11 | ) 12 | 13 | const Label = React.forwardRef< 14 | React.ElementRef, 15 | React.ComponentPropsWithoutRef & 16 | VariantProps 17 | >(({ className, ...props }, ref) => ( 18 | 23 | )) 24 | Label.displayName = LabelPrimitive.Root.displayName 25 | 26 | export { Label } 27 | -------------------------------------------------------------------------------- /components/ui/textarea.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | export interface TextareaProps 6 | extends React.TextareaHTMLAttributes {} 7 | 8 | const Textarea = React.forwardRef( 9 | ({ className, ...props }, ref) => { 10 | return ( 11 |