├── .env.example ├── .eslintrc.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode └── settings.json ├── README.md ├── bun.lockb ├── components.json ├── components ├── Feature.tsx └── TopBar.tsx ├── drizzle.config.ts ├── next.config.mjs ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── card-01.png ├── card-02.png ├── card-03.png ├── ellipse-back.webp ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── git.svg ├── github-oss-animation.svg ├── images │ ├── bridge.jpg │ └── og-image.png ├── landing │ ├── Record (online-voice-recorder.com).mp3 │ ├── feature │ │ ├── feature1.webp │ │ ├── feature2.webp │ │ ├── feature3.webp │ │ ├── feature4.webp │ │ ├── feature5.webp │ │ ├── feature6.webp │ │ └── feature7.webp │ ├── gradient-icon.webp │ ├── gradient-icon2.webp │ ├── icon-logos │ │ ├── logo1.webp │ │ ├── logo2.webp │ │ ├── logo3.webp │ │ ├── logo4.webp │ │ ├── logo5.webp │ │ ├── logo6.webp │ │ └── logo7.webp │ ├── lights │ │ ├── horizontal-light.webp │ │ ├── light-1 copy.webp │ │ ├── light-1-srcset-1.png │ │ ├── light-1-srcset-2.png │ │ ├── light-1-webp │ │ ├── light-2-srcset-1.png │ │ ├── light-2-srcset-2.png │ │ ├── light-2.webp │ │ ├── light.webp │ │ └── typescript-logo-svgrepo-com.svg │ ├── powered │ │ ├── shape.webp │ │ └── shape2.svg │ ├── right-bottom.webp │ ├── right.png │ └── usps │ │ ├── 1.webp │ │ ├── 2.webp │ │ └── 3.webp ├── menu │ ├── blog1.jpg │ └── blog2.jpeg ├── next.svg ├── site.webmanifest └── vercel.svg ├── src ├── app │ ├── (non-dashboard) │ │ ├── (auth) │ │ │ ├── layout.tsx │ │ │ ├── sign-in │ │ │ │ └── page.tsx │ │ │ └── sign-up │ │ │ │ └── page.tsx │ │ ├── (landing) │ │ │ ├── _components │ │ │ │ ├── Video │ │ │ │ │ ├── Video.tsx │ │ │ │ │ └── video.module.scss │ │ │ │ ├── __development │ │ │ │ │ └── font-showcase.tsx │ │ │ │ ├── content-gradient │ │ │ │ │ ├── content.module.scss │ │ │ │ │ └── gradient-content.tsx │ │ │ │ ├── cta-section │ │ │ │ │ ├── CTAsection.module.scss │ │ │ │ │ └── cta-section.tsx │ │ │ │ ├── effects │ │ │ │ │ ├── home-lights.tsx │ │ │ │ │ ├── landing-effects.tsx │ │ │ │ │ └── lights.tsx │ │ │ │ ├── faq │ │ │ │ │ ├── faq-item.tsx │ │ │ │ │ └── faq.tsx │ │ │ │ ├── feature │ │ │ │ │ ├── _components │ │ │ │ │ │ └── emoji-badges.tsx │ │ │ │ │ ├── feature.module.scss │ │ │ │ │ └── feature.tsx │ │ │ │ ├── footer │ │ │ │ │ ├── footer.d.ts │ │ │ │ │ ├── footer.module.scss │ │ │ │ │ └── footer.tsx │ │ │ │ ├── hero │ │ │ │ │ ├── ZenWealth │ │ │ │ │ │ ├── Description.tsx │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ ├── ZenWealth.tsx │ │ │ │ │ │ └── ZenWealthContainer.tsx │ │ │ │ │ ├── hero.module.scss │ │ │ │ │ └── hero.tsx │ │ │ │ ├── horizontal-line.tsx │ │ │ │ ├── icons.tsx │ │ │ │ ├── logo-section │ │ │ │ │ ├── logo-section.tsx │ │ │ │ │ └── logos.module.scss │ │ │ │ ├── navigation │ │ │ │ │ ├── _components │ │ │ │ │ │ ├── hero-badge.tsx │ │ │ │ │ │ ├── logo.tsx │ │ │ │ │ │ └── sign-in-button.tsx │ │ │ │ │ ├── header.d.ts │ │ │ │ │ ├── header.module.scss │ │ │ │ │ └── header.tsx │ │ │ │ ├── page-container.tsx │ │ │ │ ├── powered-by │ │ │ │ │ ├── Marquee.tsx │ │ │ │ │ ├── carousel-brands.ts │ │ │ │ │ ├── integration-title.module.scss │ │ │ │ │ ├── integration-title.tsx │ │ │ │ │ ├── powered-by.module.scss │ │ │ │ │ └── powered-by.tsx │ │ │ │ ├── rainbow-line.tsx │ │ │ │ └── text-marquee │ │ │ │ │ ├── MarqueeItems.tsx │ │ │ │ │ ├── usp-marquee.tsx │ │ │ │ │ └── video.module.scss │ │ │ ├── b │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── page.tsx │ │ │ └── styles │ │ │ │ ├── app.scss │ │ │ │ ├── landing.scss │ │ │ │ ├── modules │ │ │ │ ├── horizontal-line.module.css │ │ │ │ ├── lights.module.scss │ │ │ │ ├── noise.module.css │ │ │ │ └── noise.png │ │ │ │ ├── theme │ │ │ │ ├── _fonts.scss │ │ │ │ └── _typography.scss │ │ │ │ └── utils │ │ │ │ └── utillity-classes.scss │ │ ├── (miscellaneous) │ │ │ ├── changelog │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ ├── design-system │ │ │ │ ├── _components │ │ │ │ │ ├── DesignSystemWrapper.tsx │ │ │ │ │ └── DirectionAwareNav.tsx │ │ │ │ ├── card-spotlight │ │ │ │ │ └── page.tsx │ │ │ │ └── notice │ │ │ │ │ └── page.tsx │ │ │ ├── hooks-showcase │ │ │ │ ├── _components │ │ │ │ │ └── hooks-showcase-wrapper.tsx │ │ │ │ ├── geolocation │ │ │ │ │ ├── _components │ │ │ │ │ │ ├── geolocation-showcase.tsx │ │ │ │ │ │ └── geolocation.loader.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── palette │ │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ └── old-landing │ │ │ │ └── page.tsx │ │ ├── docs │ │ │ ├── kanban-board │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ └── todo │ │ │ │ └── page.tsx │ │ └── layout.tsx │ ├── api │ │ ├── account │ │ │ └── route.ts │ │ └── auth │ │ │ ├── logout │ │ │ └── route.ts │ │ │ └── session │ │ │ └── route.ts │ ├── dashboard │ │ ├── activity │ │ │ └── page.tsx │ │ ├── client-wrapper.tsx │ │ ├── finance │ │ │ ├── _components │ │ │ │ ├── add-transaction-form.tsx │ │ │ │ ├── display-goal.tsxpwd │ │ │ │ ├── expense-breakdown.tsx │ │ │ │ ├── finance-dashboard.tsx │ │ │ │ ├── recent-transactions.tsx │ │ │ │ ├── set-budget-goal.tsx │ │ │ │ ├── set-goal-form.tsx │ │ │ │ └── summary-card.tsx │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── folders │ │ │ ├── _components │ │ │ │ ├── file-tree.tsx │ │ │ │ ├── folder-context-menu.tsx │ │ │ │ └── new-folder-form.tsx │ │ │ ├── _hooks │ │ │ │ ├── updated-file-operations-hook.ts │ │ │ │ └── use-file-operations.ts │ │ │ └── page.tsx │ │ ├── ig-follower-parser │ │ │ ├── _components │ │ │ │ └── csv-ig-parser.tsx │ │ │ └── page.tsx │ │ ├── layout.client.tsx │ │ ├── layout.tsx │ │ ├── media-recorder │ │ │ └── page.tsx │ │ ├── page.tsx │ │ ├── profile │ │ │ ├── ProfileForm.tsx │ │ │ ├── appearance.tsx │ │ │ ├── get-user-profile.ts │ │ │ └── page.tsx │ │ ├── tasks │ │ │ └── page.tsx │ │ └── text-processor │ │ │ ├── id-username │ │ │ └── page.tsx │ │ │ └── page.tsx │ ├── favicon.ico │ ├── layout.tsx │ ├── loading.tsx │ ├── not-found.tsx │ ├── opengraph-image.png │ ├── robots.ts │ └── sitemap.ts ├── components │ ├── Banner.tsx │ ├── DeploymentInfo.tsx │ ├── Sidebar.tsx │ ├── ThemeProvider.tsx │ ├── _development-utils │ │ ├── auth-status-indicator.tsx │ │ ├── color-picker.tsx │ │ ├── color-utils.tsx │ │ └── tailwind-color-palette.tsx │ ├── _old-landing │ │ ├── Hero │ │ │ ├── Gradual-spacing.tsx │ │ │ ├── Hero.tsx │ │ │ ├── Maq.tsx │ │ │ ├── Scrolls.tsx │ │ │ └── ShinyLighs.tsx │ │ ├── bent-grid.tsx │ │ ├── bento-grid-parent.tsx │ │ ├── bento-grid.config.ts │ │ ├── bento-grid │ │ │ ├── animated-beam-multiple-outputs.tsx │ │ │ ├── animated-list-demo.tsx │ │ │ ├── bento-grid-parent.tsx │ │ │ ├── bento-grid.config.ts │ │ │ └── bento-grid.tsx │ │ ├── footer.tsx │ │ └── spotlight-card │ │ │ └── spotlight-cards.tsx │ ├── aside │ │ ├── route-specific │ │ │ ├── dashboard-home-aside.tsx │ │ │ ├── folders-aside.tsx │ │ │ ├── ig-parsed-aside.tsx │ │ │ ├── notes-aside.tsx │ │ │ └── settings-aside.tsx │ │ ├── sidebar.tsx │ │ ├── site-settings-menu.tsx │ │ ├── skeleton.sidebbar.tsx │ │ ├── skeleton.sub-sidebar.tsx │ │ ├── sub-sidebar-shell.tsx │ │ └── types.sidear.d.ts │ ├── atoms │ │ ├── @@Kbd.tsx │ │ ├── Center.tsx │ │ ├── Flex.tsx │ │ ├── Spacer.tsx │ │ ├── index.ts │ │ └── kbd.tsx │ ├── auth │ │ ├── auth.d.ts │ │ ├── onboarding.tsx │ │ ├── sign-in-form.tsx │ │ ├── sign-out-button.tsx │ │ ├── sign-up-form.tsx │ │ ├── user-dropdown-menu │ │ │ ├── user-dropdown-button.tsx │ │ │ ├── user-dropdown-menu-item.tsx │ │ │ └── user-dropdown-menu.tsx │ │ └── with-user-info.tsx │ ├── base │ │ ├── Icons.tsx │ │ ├── ThemeWrapper.tsx │ │ ├── icons.tsx │ │ ├── layout │ │ │ └── main-content-wrapper.tsx │ │ └── logo.tsx │ ├── dashboard │ │ ├── features │ │ │ ├── activity │ │ │ │ ├── activities.d.ts │ │ │ │ ├── activities.tsx │ │ │ │ ├── activity-card.tsx │ │ │ │ ├── activity-feed.tsx │ │ │ │ ├── activity-list.tsx │ │ │ │ ├── animate-height.tsx │ │ │ │ ├── create-activity-form.tsx │ │ │ │ ├── create-activity-popover.tsx │ │ │ │ ├── mock-activity-api.ts │ │ │ │ ├── recent-activities.tsx │ │ │ │ └── use-activities.ts │ │ │ ├── intro │ │ │ │ ├── current-time.tsx │ │ │ │ └── get-weather.tsx │ │ │ └── tasks │ │ │ │ ├── create-task-popover.tsx │ │ │ │ ├── task-board.tsx │ │ │ │ ├── task-detail-popover.tsx │ │ │ │ ├── task-item.tsx │ │ │ │ ├── task-list.tsx │ │ │ │ └── task-management.tsx │ │ ├── layout │ │ │ └── top-bar │ │ │ │ └── top-bar.tsx │ │ ├── no-data-state.tsx │ │ ├── onboarding-trigger.tsx │ │ └── weather-time.tsx │ ├── effects │ │ ├── animated-beam.tsx │ │ ├── animated-list.tsx │ │ ├── blur-in.tsx │ │ ├── card-spotlight │ │ │ ├── card-spotlight.tsx │ │ │ ├── use-mouse-position.ts │ │ │ └── useMousePosition.ts │ │ ├── confetti.tsx │ │ ├── empty-state-loader.tsx │ │ ├── fade-in.tsx │ │ ├── gitihu-oss │ │ │ ├── ShinyLighs.tsx │ │ │ ├── github-open-source.tsx │ │ │ ├── oss-chips.tsx │ │ │ └── oss-light.tsx │ │ ├── globe │ │ │ └── world-globe.tsx │ │ ├── glow-text-effect.tsx │ │ ├── hover-card.tsx │ │ ├── loaders │ │ │ ├── heartbeat-loader.tsx │ │ │ ├── loading-dots.tsx │ │ │ ├── skeleton-loader.tsx │ │ │ └── skeleton.tsx │ │ ├── number-ticker.tsx │ │ ├── onboarding-trigger.tsx │ │ ├── particles.tsx │ │ ├── ripple.tsx │ │ ├── shiny-button.tsx │ │ ├── show-hide.tsx │ │ ├── sortable-list.tsx │ │ └── spotlight.txt │ ├── elements │ │ ├── crud │ │ │ ├── add-note-modal.tsx │ │ │ ├── confirm-dialog.tsx │ │ │ ├── confirmation-modal.tsx │ │ │ ├── create-folder-modal.tsx │ │ │ ├── crud-button.tsx │ │ │ └── edit-folder-modal.tsx │ │ ├── custom-dropdown.tsx │ │ ├── dark-light-toggle.tsx │ │ ├── display-code │ │ │ ├── code-block.tsx │ │ │ ├── code-highlight │ │ │ │ ├── CodeContent.tsx │ │ │ │ ├── FileHeader.tsx │ │ │ │ ├── code-highlight.tsx │ │ │ │ └── types.code-highlight.ts │ │ │ └── command-inline-code.tsx │ │ ├── index.ts │ │ ├── notice-box.tsx │ │ ├── notification-bar │ │ │ └── notification-bar.tsx │ │ ├── search.tsx │ │ └── tree-renderer.tsx │ ├── features │ │ ├── record-peripherals │ │ │ ├── audio-recorder.tsx │ │ │ ├── display-webcam.tsx │ │ │ ├── peripherals-recorder.tsx │ │ │ ├── video-recorder.tsx │ │ │ └── volume-slider.tsx │ │ └── text-processor │ │ │ ├── text-processor copy.tsx │ │ │ └── text-processor.tsx │ ├── rich-text-editor.tsx │ ├── sidebar-items.tsx │ ├── tiptap-editor.tsx │ └── ui │ │ ├── ThemeToggle.tsx │ │ ├── accordion.tsx │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── animations.ts │ │ ├── avatar.tsx │ │ ├── badge.tsx │ │ ├── breadcrumb.tsx │ │ ├── button.tsx │ │ ├── calendar.tsx │ │ ├── cals.tsx │ │ ├── card.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── color-picker.tsx │ │ ├── command.tsx │ │ ├── context-menu.tsx │ │ ├── dialog.tsx │ │ ├── dropdown-menu.tsx │ │ ├── form.tsx │ │ ├── hover-card.tsx │ │ ├── icon.tsx │ │ ├── index.ts │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── marquee.tsx │ │ ├── menubar.tsx │ │ ├── navigation-menu.tsx │ │ ├── notice.tsx │ │ ├── pagination.tsx │ │ ├── popover.tsx │ │ ├── popup.tsx │ │ ├── progress.tsx │ │ ├── radio-group.tsx │ │ ├── resizable.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── simple-checkbox.tsx │ │ ├── skeleton.tsx │ │ ├── slider.tsx │ │ ├── sonner.tsx │ │ ├── spinner.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toaster.tsx │ │ ├── toggle-group.tsx │ │ ├── toggle.tsx │ │ ├── tooltip.tsx │ │ └── useFormField.tsx ├── config │ ├── menu-config.ts │ ├── nav.ts │ └── site-config.ts ├── core │ ├── config │ │ ├── fonts │ │ │ ├── font.bricolage_grotesque.ts │ │ │ ├── font.pt_mono.ts │ │ │ ├── fonts.ts │ │ │ └── geist │ │ │ │ ├── GeistMonoVF.woff │ │ │ │ ├── GeistVF.woff │ │ │ │ └── font.geist.ts │ │ ├── locales │ │ │ ├── en.ts │ │ │ └── locales.ts │ │ ├── menu-items │ │ │ ├── dashboard-navigation-menu-items.ts │ │ │ ├── design-system-menu.items.ts │ │ │ ├── dropdown-menu.items.ts │ │ │ └── sidebar-menu-items.ts │ │ ├── metadata │ │ │ ├── dashboard.metadata.ts │ │ │ └── metadata.root-layout.ts │ │ ├── nav.ts │ │ └── site-config.ts │ ├── constants │ │ ├── animations.ts │ │ ├── cn-tw.ts │ │ └── generate-uuid.ts │ ├── hooks │ │ ├── _hook_helpers │ │ │ ├── use-event-callback.ts │ │ │ ├── use-event-listener.ts │ │ │ └── use-isomorphic-layout-effect.ts │ │ ├── index.ts │ │ ├── use-copy-clipboard.ts │ │ ├── use-dev-mode.ts │ │ ├── use-geo-location.ts │ │ ├── use-keyboard-shortcuts.ts │ │ ├── use-local-storage.ts │ │ ├── use-mouse-hover.ts │ │ ├── use-skeleton-loader.ts │ │ └── use-user-info.ts │ ├── models │ │ ├── activities.ts │ │ ├── folders.z.ts │ │ └── index.ts │ ├── scripts │ │ └── fix-imports │ │ │ ├── optimize-iu-imports.mdx │ │ │ └── optimize-ui-imports.py │ ├── server │ │ ├── actions │ │ │ ├── activities │ │ │ │ └── create-activity.ts │ │ │ ├── activity-log │ │ │ │ ├── fetch-activity.ts │ │ │ │ ├── index.ts │ │ │ │ └── log-activity.ts │ │ │ ├── activity.ts │ │ │ ├── finance │ │ │ │ ├── budget.ts │ │ │ │ ├── goals.ts │ │ │ │ ├── index.ts │ │ │ │ └── transactions.ts │ │ │ ├── folders │ │ │ │ └── index.ts │ │ │ ├── get-visitory-city.ts │ │ │ ├── github │ │ │ │ ├── fetch-github-stats.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── notes.ts │ │ │ ├── save-parsed-output.ts │ │ │ ├── save-processed-text │ │ │ │ └── save-processed-text.ts │ │ │ ├── tasks │ │ │ │ ├── add-sub-task.ts │ │ │ │ ├── add-task-label.ts │ │ │ │ ├── create-task.ts │ │ │ │ ├── get-label.ts │ │ │ │ ├── get-task.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── remove-task-label.ts │ │ │ │ ├── update-sub-task.ts │ │ │ │ ├── update-task-due-date.ts │ │ │ │ ├── update-task-priority.ts │ │ │ │ └── update-task-status.ts │ │ │ ├── update-user-profile.ts │ │ │ └── user │ │ │ │ ├── action.sign-in.ts │ │ │ │ ├── action.sign-out.ts │ │ │ │ ├── action.sign-up.ts │ │ │ │ ├── action.update-user.ts │ │ │ │ ├── index.ts │ │ │ │ └── user-profile.ts │ │ ├── auth │ │ │ ├── client-auth-utils.ts │ │ │ ├── lucia.ts │ │ │ └── utils.ts │ │ └── db │ │ │ ├── index.ts │ │ │ └── schema │ │ │ ├── activity.ts │ │ │ ├── auth.ts │ │ │ ├── finance │ │ │ ├── budget.ts │ │ │ ├── goals.ts │ │ │ ├── index.ts │ │ │ └── transactions.ts │ │ │ ├── folders.ts │ │ │ ├── index.ts │ │ │ ├── notes.ts │ │ │ ├── parsed-ig.ts │ │ │ ├── processed-text.ts │ │ │ └── tasks │ │ │ ├── index.ts │ │ │ ├── label.ts │ │ │ ├── task-label.ts │ │ │ └── task.ts │ └── stores │ │ ├── index.ts │ │ ├── store.dismiss-notification.ts │ │ ├── store.file-tree.ts │ │ ├── store.main.sidebar.ts │ │ ├── store.notes.ts │ │ ├── store.parsed.ts │ │ ├── store.site-settings.ts │ │ ├── store.sub-sidebar.ts │ │ ├── store.theme.ts │ │ └── store.toasts.ts ├── lib │ ├── actions │ │ ├── folders.ts │ │ └── notes.ts │ ├── env.mjs │ └── utils.ts ├── styles │ ├── app.scss │ ├── components │ │ ├── _hover-efffect.scss │ │ ├── _mouse-grid.scss │ │ └── _scrollar.scss │ ├── core │ │ └── _typography.scss │ ├── themes │ │ ├── _default-theme.scss │ │ └── _theme-selector.scss │ └── utillities │ │ ├── _animations.scss │ │ ├── _border.scss │ │ └── _utillities.scss └── types │ ├── canvas-confetti.d.ts │ ├── design-system.d.ts │ ├── global.d.ts │ ├── tasks.d.ts │ ├── tree-item.types.d.ts │ ├── types.folder.d.ts │ └── types.users.d.ts ├── tailwind.config.ts └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | # Database Configuration 2 | DATABASE_URL= 3 | 4 | # GitHub Configuration 5 | GITHUB_ACCESS_TOKEN= 6 | NEXT_PUBLIC_GITHUB_USERNAME= 7 | NEXT_PUBLIC_GITHUB_REPOSITORY= 8 | 9 | # OpenRouteService API Key 10 | OPENROUTE_SERVICE_API_KEY= 11 | 12 | # IP Geolocation API Key 13 | IP_GEOLOCATION_API_KEY= 14 | 15 | # Admin Email Configuration 16 | ADMIN_EMAIL= 17 | ADMIN_EMAIL_TWO= 18 | 19 | # GitHub and Vercel Tokens for Changelog 20 | NEXT_PUBLIC_GITHUB_TOKEN= 21 | NEXT_PUBLIC_VERCEL_PROJECT_ID= 22 | NEXT_PUBLIC_VERCEL_TOKEN= 23 | 24 | # PostHog Analytics Configuration 25 | NEXT_PUBLIC_POSTHOG_KEY= 26 | NEXT_PUBLIC_POSTHOG_HOST= 27 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals", 3 | "rules": { 4 | "react/jsx-no-undef": [ 5 | "error", 6 | { 7 | "ignore": ["spa", "title", "ptitle", "subtitle", "psub"] 8 | } 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.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 | 39 | 40 | 41 | # package managers 42 | bun.lockb 43 | 44 | # misc 45 | .cursorrules 46 | .cursorignore 47 | _LOCAL/ 48 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .next 3 | dist 4 | build 5 | .contentlayer 6 | public 7 | tmp 8 | _templates 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "tabWidth": 4, 4 | "singleQuote": true, 5 | "semi": false, 6 | "trailingComma": "none", 7 | "overrides": [ 8 | { 9 | "files": ["*.tsx", "*.ts", "*.scss", "*.css", "*.mdx"], 10 | "options": { 11 | "useTabs": true, 12 | "tabWidth": 4, 13 | "singleQuote": true, 14 | "semi": false, 15 | "trailingComma": "none" 16 | } 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true, 3 | "typescript.tsdk": "node_modules/typescript/lib", 4 | "keybindings": [ 5 | { 6 | "key": "ctrl+u", 7 | "command": "workbench.action.chat.startVoiceChat", 8 | "when": "!voiceChatInProgress" 9 | }, 10 | { 11 | "key": "ctrl+u", 12 | "command": "workbench.action.chat.stopListeningAndSubmit", 13 | "when": "voiceChatInProgress" 14 | }, 15 | { 16 | "key": "ctrl+d", 17 | "command": "workbench.action.editorDictation.start", 18 | "when": "!editorDictation.inProgress" 19 | }, 20 | { 21 | "key": "ctrl+d", 22 | "command": "workbench.action.editorDictation.stop", 23 | "when": "editorDictation.inProgress" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/bun.lockb -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "src/app/globals.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true 11 | }, 12 | "aliases": { 13 | "components": "@/components", 14 | "utils": "@/lib/utils" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /components/Feature.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/components/Feature.tsx -------------------------------------------------------------------------------- /components/TopBar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/components/TopBar.tsx -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- 1 | import { env } from '@/lib/env.mjs' 2 | import type { Config } from 'drizzle-kit' 3 | 4 | export default { 5 | schema: './src/lib/db/schema/index.ts', 6 | out: './src/core/server/db/migrations', 7 | driver: 'pg', 8 | dbCredentials: { 9 | connectionString: env.DATABASE_URL 10 | } 11 | } satisfies Config 12 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | experimental: { 4 | reactCompiler: true 5 | }, 6 | images: { 7 | domains: ['cdn.prod.website-files.com'] 8 | }, 9 | webpack: config => { 10 | config.externals.push('@node-rs/argon2', '@node-rs/bcrypt') 11 | return config 12 | }, 13 | eslint: { 14 | ignoreDuringBuilds: true 15 | }, 16 | typescript: { 17 | ignoreBuildErrors: true 18 | } 19 | } 20 | 21 | export default nextConfig 22 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/card-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/card-01.png -------------------------------------------------------------------------------- /public/card-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/card-02.png -------------------------------------------------------------------------------- /public/card-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/card-03.png -------------------------------------------------------------------------------- /public/ellipse-back.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/ellipse-back.webp -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/favicon.ico -------------------------------------------------------------------------------- /public/images/bridge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/images/bridge.jpg -------------------------------------------------------------------------------- /public/images/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/images/og-image.png -------------------------------------------------------------------------------- /public/landing/Record (online-voice-recorder.com).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/Record (online-voice-recorder.com).mp3 -------------------------------------------------------------------------------- /public/landing/feature/feature1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature1.webp -------------------------------------------------------------------------------- /public/landing/feature/feature2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature2.webp -------------------------------------------------------------------------------- /public/landing/feature/feature3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature3.webp -------------------------------------------------------------------------------- /public/landing/feature/feature4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature4.webp -------------------------------------------------------------------------------- /public/landing/feature/feature5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature5.webp -------------------------------------------------------------------------------- /public/landing/feature/feature6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature6.webp -------------------------------------------------------------------------------- /public/landing/feature/feature7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/feature/feature7.webp -------------------------------------------------------------------------------- /public/landing/gradient-icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/gradient-icon.webp -------------------------------------------------------------------------------- /public/landing/gradient-icon2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/gradient-icon2.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo1.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo2.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo3.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo4.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo5.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo6.webp -------------------------------------------------------------------------------- /public/landing/icon-logos/logo7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/icon-logos/logo7.webp -------------------------------------------------------------------------------- /public/landing/lights/horizontal-light.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/horizontal-light.webp -------------------------------------------------------------------------------- /public/landing/lights/light-1 copy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-1 copy.webp -------------------------------------------------------------------------------- /public/landing/lights/light-1-srcset-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-1-srcset-1.png -------------------------------------------------------------------------------- /public/landing/lights/light-1-srcset-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-1-srcset-2.png -------------------------------------------------------------------------------- /public/landing/lights/light-1-webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-1-webp -------------------------------------------------------------------------------- /public/landing/lights/light-2-srcset-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-2-srcset-1.png -------------------------------------------------------------------------------- /public/landing/lights/light-2-srcset-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-2-srcset-2.png -------------------------------------------------------------------------------- /public/landing/lights/light-2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light-2.webp -------------------------------------------------------------------------------- /public/landing/lights/light.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/lights/light.webp -------------------------------------------------------------------------------- /public/landing/lights/typescript-logo-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/landing/powered/shape.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/powered/shape.webp -------------------------------------------------------------------------------- /public/landing/powered/shape2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/landing/right-bottom.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/right-bottom.webp -------------------------------------------------------------------------------- /public/landing/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/right.png -------------------------------------------------------------------------------- /public/landing/usps/1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/usps/1.webp -------------------------------------------------------------------------------- /public/landing/usps/2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/usps/2.webp -------------------------------------------------------------------------------- /public/landing/usps/3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/landing/usps/3.webp -------------------------------------------------------------------------------- /public/menu/blog1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/menu/blog1.jpg -------------------------------------------------------------------------------- /public/menu/blog2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/public/menu/blog2.jpeg -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(auth)/layout.tsx: -------------------------------------------------------------------------------- 1 | import { getUserAuth } from '@/core/server/auth/utils' 2 | 3 | import { redirect } from 'next/navigation' 4 | 5 | export default async function AuthLayout({ 6 | children 7 | }: { 8 | children: React.ReactNode 9 | }) { 10 | const session = await getUserAuth() 11 | if (session?.session) redirect('/dashboard') 12 | 13 | return ( 14 |
{children}
15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/effects/home-lights.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { motion } from 'framer-motion' 4 | 5 | export default function HomeLights() { 6 | return ( 7 |
8 |
9 | 21 | 33 |
34 |
35 | ) 36 | } 37 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/effects/lights.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/src/app/(non-dashboard)/(landing)/_components/effects/lights.tsx -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/feature/_components/emoji-badges.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | interface FeatureBadge { 4 | icon: string 5 | text: string 6 | } 7 | 8 | const featureBadges: FeatureBadge[] = [ 9 | { icon: '✨', text: 'Personable' }, 10 | { icon: '🫠', text: 'Empathetic' }, 11 | { icon: '🎯', text: 'Direct' }, 12 | { icon: '😇', text: 'Friendly' } 13 | ] 14 | 15 | const FeatureBadges: React.FC = () => { 16 | return ( 17 |
18 | {featureBadges.map((badge, index) => ( 19 |
23 |
24 | {badge.icon} 25 |
26 |
{badge.text}
27 |
28 | ))} 29 |
30 | ) 31 | } 32 | 33 | export default FeatureBadges 34 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/footer/footer.d.ts: -------------------------------------------------------------------------------- 1 | export type FooterLink = { 2 | text: string 3 | href: string 4 | isNew?: boolean 5 | isBeta?: boolean 6 | external?: boolean 7 | } 8 | 9 | export type FooterColumnProps = { 10 | title: string 11 | links: FooterLink[] 12 | } 13 | 14 | export type FooterContactLinkProps = { 15 | href: string 16 | icon: React.ReactNode 17 | text: string 18 | target?: string 19 | external?: boolean 20 | } 21 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/hero/ZenWealth/Description.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | type DescriptionProps = { 4 | text: string[] 5 | } 6 | 7 | export function Description({ text }: DescriptionProps) { 8 | return ( 9 |
10 | {text.map((line, index) => ( 11 | 12 | {line} 13 |
14 |
15 | ))} 16 |
17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/hero/ZenWealth/Header.tsx: -------------------------------------------------------------------------------- 1 | type HeaderProps = { 2 | title: string 3 | subtitle: string 4 | } 5 | 6 | export function Header({ title, subtitle }: HeaderProps) { 7 | return ( 8 |
9 |

10 | {title} 11 |

12 |

{subtitle}

13 |
14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/hero/ZenWealth/ZenWealth.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { easeInOut, motion } from 'framer-motion' 4 | import HeroBadge from '../../navigation/_components/hero-badge' 5 | import { Description } from './Description' 6 | import { Header } from './Header' 7 | 8 | type ZenWealthProps = { 9 | title: string 10 | subtitle: string 11 | description: string[] 12 | } 13 | 14 | export function ZenWealth({ title, subtitle, description }: ZenWealthProps) { 15 | return ( 16 |
17 | 18 | 23 |
24 | 25 | 34 | 35 | 36 |
37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/hero/ZenWealth/ZenWealthContainer.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { ZenWealth } from './ZenWealth' 4 | 5 | function getZenWealthData() { 6 | return { 7 | title: 'Zen is wealth.', 8 | subtitle: 'A central hub for digital life.', 9 | description: [ 10 | 'Built by a dev, for myself. Without the known annoyance', 11 | 'of having to wait for Cloudflare security checks,', 12 | 'ads, newsletter popups or reCAPTCHAs.' 13 | ] 14 | } 15 | } 16 | 17 | export function ZenWealthContainer() { 18 | const zenWealthData = getZenWealthData() 19 | 20 | return ( 21 | 26 | ) 27 | } 28 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/hero/hero.module.scss: -------------------------------------------------------------------------------- 1 | .videoContainerLines { 2 | z-index: 5; 3 | width: 100%; 4 | max-width: 1128px; 5 | margin-left: auto; 6 | margin-right: auto; 7 | padding-top: 72px; 8 | padding-bottom: 72px; 9 | position: relative; 10 | } 11 | 12 | .linesGroup { 13 | z-index: 2; 14 | pointer-events: none; 15 | position: absolute; 16 | top: 0%; 17 | bottom: 0%; 18 | left: 0%; 19 | right: 0%; 20 | } 21 | 22 | .lineVerticalLeft, 23 | .lineVerticalRight { 24 | z-index: 1; 25 | background-color: var(--neutral--800); 26 | width: 1px; 27 | height: auto; 28 | position: absolute; 29 | top: 4.5px; 30 | bottom: 0%; 31 | } 32 | 33 | .lineVerticalLeft { 34 | left: 0%; 35 | right: auto; 36 | } 37 | 38 | .lineVerticalRight { 39 | left: auto; 40 | right: 0%; 41 | } 42 | 43 | .lineDot { 44 | z-index: 5; 45 | border: 1px solid var(--neutral--800); 46 | background-color: #0d0d11; 47 | border-radius: 2px; 48 | width: 10px; 49 | height: 10px; 50 | position: absolute; 51 | } 52 | 53 | .bottomLeft { 54 | top: auto; 55 | bottom: -4.5px; 56 | left: -4.5px; 57 | right: auto; 58 | } 59 | 60 | .bottomRight { 61 | top: auto; 62 | bottom: -4.5px; 63 | left: auto; 64 | right: -4.5px; 65 | } 66 | 67 | .topLeft { 68 | top: -4.5px; 69 | bottom: auto; 70 | left: -4.5px; 71 | right: auto; 72 | } 73 | 74 | .topRight { 75 | top: -4.5px; 76 | bottom: auto; 77 | left: auto; 78 | right: -4.5px; 79 | } 80 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/hero/hero.tsx: -------------------------------------------------------------------------------- 1 | import { cn } from 'cn' 2 | import HorizontalLine from '../horizontal-line' 3 | import { ZenWealthContainer } from './ZenWealth/ZenWealthContainer' 4 | import styles from './hero.module.scss' 5 | 6 | type LineDotProps = { 7 | position: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight' 8 | } 9 | 10 | function LineDot({ position }: LineDotProps) { 11 | return
12 | } 13 | 14 | export default function Hero() { 15 | return ( 16 |
17 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 |
31 | 32 | 33 |
34 | 35 |
36 |
37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/horizontal-line.tsx: -------------------------------------------------------------------------------- 1 | import styles from '../styles/modules/horizontal-line.module.css' 2 | 3 | export default function HorizontalLine() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/navigation/_components/logo.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | import RainbowLine from '../../rainbow-line' 3 | import styles from '../header.module.scss' 4 | 5 | type LogoProps = { 6 | className?: string 7 | isScrolled: boolean 8 | } 9 | 10 | export default function Logo({ className, isScrolled }: LogoProps) { 11 | const name = 'remco.' 12 | 13 | return ( 14 | 18 | 21 | {name} 22 | 23 |
26 | 27 |
28 | 29 | ) 30 | } 31 | 32 | function LogoTitle({ 33 | children, 34 | className 35 | }: { 36 | children: React.ReactNode 37 | className?: string 38 | }) { 39 | return ( 40 |

41 | {children} 42 |

43 | ) 44 | } 45 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/navigation/_components/sign-in-button.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link' 2 | 3 | type SecondaryButtonProps = { 4 | href: string 5 | children: React.ReactNode 6 | className?: string 7 | } 8 | 9 | const SecondaryButton: React.FC = ({ 10 | href, 11 | children, 12 | className 13 | }) => { 14 | return ( 15 | 19 |
20 | {children} 21 |
22 | 23 | ) 24 | } 25 | 26 | export default SecondaryButton 27 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/navigation/header.d.ts: -------------------------------------------------------------------------------- 1 | export type ProductCategoryProps = { 2 | name: string 3 | links: Array<{ 4 | href: string 5 | external?: boolean 6 | name: string 7 | }> 8 | } 9 | 10 | export type BlogPostProps = { 11 | id: string 12 | imageSrc: string 13 | title: string 14 | description: string 15 | } 16 | 17 | export type AuthLinkProps = { 18 | href: string 19 | Icon: React.ComponentType 20 | text: string 21 | } 22 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/powered-by/Marquee.tsx: -------------------------------------------------------------------------------- 1 | import Marquee from '@/components/ui/marquee' 2 | import React from 'react' 3 | import { carouselbrands } from './carousel-brands' 4 | 5 | interface CarouselItemProps { 6 | iconSrc: string 7 | altText: string 8 | text: string 9 | } 10 | 11 | const CarouselItem: React.FC = ({ 12 | iconSrc, 13 | altText, 14 | text 15 | }) => { 16 | return ( 17 |
18 | {altText} 24 |
{text}
25 |
26 | ) 27 | } 28 | 29 | export default function MarqueeDemo({ 30 | reverse = false 31 | }: { 32 | reverse?: boolean 33 | }) { 34 | return ( 35 |
36 |
37 | 38 | {' '} 39 | 44 | {carouselbrands.map((item, index) => ( 45 | 46 | ))} 47 | 48 |
49 |
50 | ) 51 | } 52 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/powered-by/carousel-brands.ts: -------------------------------------------------------------------------------- 1 | export const carouselbrands = [ 2 | { 3 | iconSrc: 4 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd507261f4d64d555c90_Apple%20Icon.webp', 5 | text: 'Apple' 6 | }, 7 | { 8 | iconSrc: 9 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd50800bda510d0058d4_Slack%20Icon.webp', 10 | text: 'Slack' 11 | }, 12 | { 13 | iconSrc: 14 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd5094b722f62744d5f9_Discord%20Icon.webp', 15 | text: 'Discord' 16 | }, 17 | { 18 | iconSrc: 19 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd5089af154f1bcc3356_Klarna%20Icon.webp', 20 | text: 'Klarna' 21 | }, 22 | { 23 | iconSrc: 24 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd5035c3344bd742b7c2_Amazon%20Icon.webp', 25 | text: 'Amazon' 26 | }, 27 | { 28 | iconSrc: 29 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd5089af154f1bcc3364_Meta%20Icon.webp', 30 | text: 'Meta' 31 | }, 32 | { 33 | iconSrc: 34 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd5189af154f1bcc3420_Yelp%20Icon.webp', 35 | text: 'Yelp' 36 | }, 37 | { 38 | iconSrc: 39 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd51800bda510d005915_Xing%20Icon.webp', 40 | text: 'Xing' 41 | }, 42 | { 43 | iconSrc: 44 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd50fca0ab56c8130f39_Twitch%20Icon.webp', 45 | text: 'Twitch' 46 | }, 47 | { 48 | iconSrc: 49 | 'https://cdn.prod.website-files.com/65b8e9cb3c15d9b62f057c9a/65bdfd5096bc5b82059cbe01_Android%20Icon.webp', 50 | text: 'Android' 51 | } 52 | ] 53 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/powered-by/integration-title.module.scss: -------------------------------------------------------------------------------- 1 | .integrationTitle { 2 | grid-column-gap: 12px; 3 | grid-row-gap: 12px; 4 | text-align: center; 5 | flex-direction: column; 6 | align-items: center; 7 | width: 100%; 8 | max-width: 552px; 9 | margin-bottom: 100px; 10 | margin-left: auto; 11 | margin-right: auto; 12 | display: flex; 13 | transform: translate3d(0px, 0px, 0px) scale3d(1, 1, 1) rotateX(0deg) 14 | rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg); 15 | opacity: 1; 16 | transform-style: preserve-3d; 17 | } 18 | 19 | .badge { 20 | grid-column-gap: 4px; 21 | grid-row-gap: 4px; 22 | border: 1px solid var(--white--6); 23 | background-color: var(--white--2); 24 | box-shadow: inset 0 -4px 12px 0 var(--white--10); 25 | backdrop-filter: blur(12px); 26 | color: var(--base--white); 27 | border-radius: 99px; 28 | align-items: center; 29 | padding: 4px 10px; 30 | font-size: 12px; 31 | line-height: 1.7; 32 | display: flex; 33 | } 34 | 35 | .integrationTitle h3 { 36 | margin-top: 20px; 37 | margin-bottom: 10px; 38 | color: var(--base--white); 39 | letter-spacing: -0.17px; 40 | font-family: 'Bricolage Grotesque', sans-serif; 41 | font-size: 40px; 42 | font-weight: 500; 43 | line-height: 1.2; 44 | } 45 | 46 | .gradientSpan { 47 | background-image: linear-gradient( 48 | to bottom, 49 | var(--base--white), 50 | var(--white--64) 51 | ); 52 | -webkit-text-fill-color: transparent; 53 | background-clip: text; 54 | } 55 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/powered-by/integration-title.tsx: -------------------------------------------------------------------------------- 1 | import styles from './integration-title.module.scss' 2 | 3 | export default function IntegrationTitle() { 4 | return ( 5 |
6 |
7 |
Application powered by
8 |
9 |

10 | 11 | You won't get AI pushed 12 |
down your throat here 13 |
14 |

15 |
16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/_components/text-marquee/MarqueeItems.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { easeInOut, motion } from 'framer-motion' 4 | import HorizontalLine from '../horizontal-line' 5 | import UspMarquee from './usp-marquee' 6 | import styles from './video.module.scss' 7 | type LineDotProps = { 8 | position: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight' 9 | } 10 | 11 | function LineDot({ position }: LineDotProps) { 12 | return
13 | } 14 | 15 | function LinesGroup() { 16 | return ( 17 |
18 |
19 |
20 | 21 | 22 | 23 | 24 |
25 | ) 26 | } 27 | 28 | export default function MarqueeItems() { 29 | return ( 30 |
31 | 32 |
33 | 39 | 40 | 41 |
42 |
43 |
44 | 45 | 46 |
47 | 48 |
49 |
50 | ) 51 | } 52 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/layout.tsx: -------------------------------------------------------------------------------- 1 | import HomeLights from './_components/effects/home-lights' 2 | import LandingEffects from './_components/effects/landing-effects' 3 | // import './styles/landing.scss' 4 | import './styles/app.scss' 5 | 6 | export default function DashboardLayout({ 7 | children 8 | }: { 9 | children: React.ReactNode 10 | }) { 11 | return ( 12 | <> 13 | 14 | {children} 15 | 16 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/styles/modules/horizontal-line.module.css: -------------------------------------------------------------------------------- 1 | .horizontalLine { 2 | z-index: 0; 3 | background-color: var(--neutral--800); 4 | pointer-events: none; 5 | width: 100vw; 6 | height: 1px; 7 | position: absolute; 8 | top: auto; 9 | bottom: 0%; 10 | left: 50%; 11 | transform: translateX(-50%); 12 | } 13 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/styles/modules/lights.module.scss: -------------------------------------------------------------------------------- 1 | .home-lights { 2 | z-index: 98; 3 | pointer-events: none; 4 | justify-content: center; 5 | align-items: flex-start; 6 | display: flex; 7 | position: absolute; 8 | top: 0%; 9 | bottom: auto; 10 | left: 0%; 11 | right: 0%; 12 | } 13 | 14 | .light-left { 15 | width: 80vw; 16 | max-width: 1440px; 17 | position: absolute; 18 | top: 0%; 19 | bottom: auto; 20 | left: 0%; 21 | right: auto; 22 | animation: glowRighte 8s infinite alternate ease-in-out; 23 | } 24 | 25 | .light-right { 26 | width: 80vw; 27 | max-width: 1440px; 28 | position: absolute; 29 | top: 0%; 30 | bottom: auto; 31 | left: auto; 32 | right: 0%; 33 | animation: glowRight 10s infinite alternate ease-in-out; 34 | } 35 | 36 | .light-wrap { 37 | width: 100%; 38 | min-width: 1440px; 39 | position: relative; 40 | } 41 | 42 | @keyframes glowLeft { 43 | 0% { 44 | transform: scale(0.95); 45 | opacity: 0.9; 46 | } 47 | 48 | 50% { 49 | transform: scale(1.03); 50 | opacity: 1; 51 | } 52 | 53 | 100% { 54 | transform: scale(0.98); 55 | opacity: 0.95; 56 | } 57 | } 58 | 59 | @keyframes glowRight { 60 | 0% { 61 | transform: scale(0.17); 62 | opacity: 0.63; 63 | } 64 | 65 | 60% { 66 | transform: scale(0.4); 67 | opacity: 0.73; 68 | } 69 | 70 | 100% { 71 | transform: scale(0.77); 72 | opacity: 0.83; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/styles/modules/noise.module.css: -------------------------------------------------------------------------------- 1 | .noise { 2 | z-index: 99999; 3 | opacity: 0.22; 4 | pointer-events: none; 5 | background-image: url('https: //assets-global.website-files.com/65b8e9cb3c15d9b62f057c9a/65b8fe1b1063b88db89fa90a_Noise.png'); 6 | /* soDo: take local image */ 7 | background-position: 0 0; 8 | background-size: 1440px; 9 | height: 100%; 10 | position: absolute; 11 | top: 0%; 12 | bottom: 0%; 13 | left: 0%; 14 | right: 0%; 15 | } 16 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(landing)/styles/modules/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/remcostoeten/nextjs-lucia-neon-postgresql-drizzle-dashboard/ca67b1f795427ef68988a24567e6e2ed98aef495/src/app/(non-dashboard)/(landing)/styles/modules/noise.png -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(miscellaneous)/changelog/layout.tsx: -------------------------------------------------------------------------------- 1 | import Particles from '@/components/effects/particles' 2 | import Container from '../../(landing)/_components/page-container' 3 | 4 | export default function RootLayout({ children }: PageProps) { 5 | return ( 6 | <> 7 | {children} 8 | 9 | 10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(miscellaneous)/design-system/_components/DesignSystemWrapper.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { DesignSystemWrapperProps } from '@/types/design-system' 4 | import { Button, Card } from 'ui' 5 | 6 | export default function DesignSystemWrapper({ 7 | title, 8 | description, 9 | actionButtons = [], 10 | children 11 | }: DesignSystemWrapperProps) { 12 | return ( 13 |
14 |
15 |

{title}

16 |

{description}

17 |
18 | {actionButtons.length > 0 && ( 19 | 20 |
21 | {actionButtons.map((button, index) => ( 22 | 29 | ))} 30 |
31 |
32 | )} 33 |
34 | {children} 35 |
36 |
37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(miscellaneous)/hooks-showcase/geolocation/page.tsx: -------------------------------------------------------------------------------- 1 | import { HooksShowcaseWrapper } from '../_components/hooks-showcase-wrapper' 2 | import GeolocationUI from './_components/geolocation-showcase' 3 | 4 | export default function GeolocationDemo() { 5 | return ( 6 | } 14 | > 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(miscellaneous)/hooks-showcase/palette/page.tsx: -------------------------------------------------------------------------------- 1 | import { TailwindColorPalette } from '@/components/_development-utils/tailwind-color-palette' 2 | 3 | export default function page() { 4 | return ( 5 |
6 | 7 |
8 | ) 9 | } 10 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(miscellaneous)/layout.tsx: -------------------------------------------------------------------------------- 1 | export default function ShowcaseLayout({ 2 | children 3 | }: { 4 | children: React.ReactNode 5 | }) { 6 | return ( 7 | <> 8 |
9 | {children} 10 |
11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/(miscellaneous)/old-landing/page.tsx: -------------------------------------------------------------------------------- 1 | import BentoGridIntro from '@/components/_old-landing/bent-grid' 2 | import Hero from '@/components/_old-landing/Hero/Hero' 3 | 4 | export default function Home() { 5 | return ( 6 | <> 7 | 8 | 9 | 10 | 11 | 12 | ) 13 | } 14 | 15 | interface PageProps { 16 | children: React.ReactNode 17 | } 18 | 19 | function Wrapper({ children }: PageProps) { 20 | return ( 21 |
22 | {children} 23 |
24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/docs/layout.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export default function DocsLayout({ 4 | children 5 | }: { 6 | children: React.ReactNode 7 | }) { 8 | return
{children}
9 | } 10 | -------------------------------------------------------------------------------- /src/app/(non-dashboard)/layout.tsx: -------------------------------------------------------------------------------- 1 | import ThemeWrapper from '@/components/base/ThemeWrapper' 2 | import Footer from './(landing)/_components/footer/footer' 3 | import Header from './(landing)/_components/navigation/header' 4 | 5 | export default function RootLayout({ children }: PageProps) { 6 | return ( 7 | 8 |
9 |
{children}
10 | 11 |