├── supabase
├── seed.sql
└── .gitignore
├── .nvmrc
├── .eslintrc.json
├── src
├── app
│ ├── app
│ │ ├── @dialog
│ │ │ ├── page.tsx
│ │ │ ├── default.tsx
│ │ │ ├── (.)projects
│ │ │ │ ├── page.tsx
│ │ │ │ ├── default.tsx
│ │ │ │ ├── not-found.tsx
│ │ │ │ ├── new
│ │ │ │ │ └── page.tsx
│ │ │ │ └── [projectId]
│ │ │ │ │ └── edit
│ │ │ │ │ └── page.tsx
│ │ │ ├── [...catchAll]
│ │ │ │ └── page.tsx
│ │ │ ├── (.)tasks
│ │ │ │ ├── not-found.tsx
│ │ │ │ ├── new
│ │ │ │ │ └── page.tsx
│ │ │ │ └── [taskId]
│ │ │ │ │ └── page.tsx
│ │ │ ├── (.)main-menu
│ │ │ │ └── page.tsx
│ │ │ └── (.)settings
│ │ │ │ └── account
│ │ │ │ └── page.tsx
│ │ ├── page.tsx
│ │ ├── main-menu
│ │ │ └── page.tsx
│ │ ├── tasks
│ │ │ ├── [taskId]
│ │ │ │ ├── loading.tsx
│ │ │ │ └── page.tsx
│ │ │ ├── not-found.tsx
│ │ │ └── new
│ │ │ │ └── page.tsx
│ │ ├── not-found.tsx
│ │ ├── projects
│ │ │ ├── [projectId]
│ │ │ │ ├── loading.tsx
│ │ │ │ ├── edit
│ │ │ │ │ └── page.tsx
│ │ │ │ └── page.tsx
│ │ │ ├── not-found.tsx
│ │ │ ├── new
│ │ │ │ └── page.tsx
│ │ │ ├── active
│ │ │ │ └── page.tsx
│ │ │ └── archived
│ │ │ │ └── page.tsx
│ │ ├── settings
│ │ │ └── account
│ │ │ │ └── page.tsx
│ │ ├── onboarding
│ │ │ └── page.tsx
│ │ ├── layout.tsx
│ │ └── today
│ │ │ └── page.tsx
│ ├── favicon.ico
│ ├── error.tsx
│ ├── auth
│ │ ├── error.tsx
│ │ ├── layout.tsx
│ │ ├── callback
│ │ │ └── route.ts
│ │ └── sign-in
│ │ │ ├── check-email-link
│ │ │ └── page.tsx
│ │ │ └── page.tsx
│ ├── global-error.tsx
│ ├── (marketing)
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── pricing
│ │ │ └── page.tsx
│ │ ├── about
│ │ │ └── page.mdx
│ │ └── features
│ │ │ └── page.tsx
│ ├── not-found.tsx
│ ├── ~offline
│ │ └── page.tsx
│ └── globals.css
├── features
│ ├── app
│ │ ├── tasks
│ │ │ ├── ui
│ │ │ │ ├── TaskCheckSize.tsx
│ │ │ │ ├── formatTaskDueDate.ts
│ │ │ │ ├── TaskFormSkeleton.tsx
│ │ │ │ ├── TaskListSkeleton.tsx
│ │ │ │ ├── DeleteTaskAlertDialog.tsx
│ │ │ │ ├── TaskList.tsx
│ │ │ │ ├── TaskListItem.tsx
│ │ │ │ ├── TaskForm.tsx
│ │ │ │ ├── TaskCheck.tsx
│ │ │ │ ├── TaskDueDatePicker.tsx
│ │ │ │ └── AddTask.tsx
│ │ │ └── domain
│ │ │ │ └── TasksDomain.ts
│ │ ├── today
│ │ │ └── ui
│ │ │ │ └── TodayPageHeader.tsx
│ │ ├── projects
│ │ │ ├── ui
│ │ │ │ ├── NoTasksInProject.tsx
│ │ │ │ ├── ProjectFormSkeleton.tsx
│ │ │ │ ├── ProjectPageSkeleton.tsx
│ │ │ │ ├── ProjectListSkeleton.tsx
│ │ │ │ ├── ProjectsPageHeader.tsx
│ │ │ │ ├── ProjectListItem.tsx
│ │ │ │ ├── DeleteProjectAlertDialog.tsx
│ │ │ │ ├── ProjectPageHeader.tsx
│ │ │ │ ├── ProjectsSelect.tsx
│ │ │ │ ├── ArchiveProjectAlertDialog.tsx
│ │ │ │ ├── ProjectList.tsx
│ │ │ │ └── ProjectForm.tsx
│ │ │ └── domain
│ │ │ │ └── ProjectsDomain.ts
│ │ ├── shared
│ │ │ └── ui
│ │ │ │ ├── MainMenuLink.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ └── MainMenu.tsx
│ │ ├── users
│ │ │ ├── ui
│ │ │ │ └── UpdateUserTimeZone.tsx
│ │ │ └── data-access
│ │ │ │ └── UsersDataAccess.ts
│ │ └── settings
│ │ │ ├── account
│ │ │ └── ui
│ │ │ │ └── AccountSettings.tsx
│ │ │ └── ui
│ │ │ └── SettingsMenu.tsx
│ ├── shared
│ │ ├── data-access
│ │ │ ├── cuid2.ts
│ │ │ ├── prisma.ts
│ │ │ └── ServerResponse.ts
│ │ ├── ui
│ │ │ ├── control
│ │ │ │ ├── dropdown
│ │ │ │ │ ├── Menu.tsx
│ │ │ │ │ └── DropdownMenu.tsx
│ │ │ │ ├── input
│ │ │ │ │ └── inputTextClassName.tsx
│ │ │ │ ├── button
│ │ │ │ │ ├── RouterButton.tsx
│ │ │ │ │ ├── DeleteIconButton.tsx
│ │ │ │ │ ├── OAuthProviderButton.tsx
│ │ │ │ │ ├── buttonClassName.tsx
│ │ │ │ │ └── SubmitButton.tsx
│ │ │ │ ├── switch
│ │ │ │ │ └── Switch.tsx
│ │ │ │ └── select
│ │ │ │ │ └── Select.tsx
│ │ │ ├── ClassNameProps.tsx
│ │ │ ├── ChildrenProps.tsx
│ │ │ ├── error
│ │ │ │ ├── errorMessages.ts
│ │ │ │ ├── ErrorList.tsx
│ │ │ │ └── DefaultError.tsx
│ │ │ ├── skeleton
│ │ │ │ └── SkeletonLine.tsx
│ │ │ ├── icon
│ │ │ │ ├── CheckIcon.tsx
│ │ │ │ ├── ExpandLessIcon.tsx
│ │ │ │ ├── ExpandMoreIcon.tsx
│ │ │ │ ├── PlusSignalIcon.tsx
│ │ │ │ ├── HamburgerMenuIcon.tsx
│ │ │ │ ├── XIcon.tsx
│ │ │ │ ├── LogoutIcon.tsx
│ │ │ │ ├── EditIcon.tsx
│ │ │ │ ├── MailIcon.tsx
│ │ │ │ ├── DeleteIcon.tsx
│ │ │ │ ├── ArchiveIcon.tsx
│ │ │ │ ├── WarningIcon.tsx
│ │ │ │ ├── UnarchiveIcon.tsx
│ │ │ │ ├── CalendarEventIcon.tsx
│ │ │ │ ├── CalendarTodayIcon.tsx
│ │ │ │ ├── AppleLogoIcon.tsx
│ │ │ │ ├── XLogoIcon.tsx
│ │ │ │ ├── ProjectsIcon.tsx
│ │ │ │ ├── PersonIcon.tsx
│ │ │ │ ├── MoreHorizontalIcon.tsx
│ │ │ │ ├── LinkedInInLogoIcon.tsx
│ │ │ │ ├── IOSShareIcon.tsx
│ │ │ │ ├── IOSAddIcon.tsx
│ │ │ │ ├── TwitterLogoIcon.tsx
│ │ │ │ ├── SettingsIcon.tsx
│ │ │ │ ├── CalendarMonthIcon.tsx
│ │ │ │ ├── GitHubLogoIcon.tsx
│ │ │ │ ├── GoogleLogoIcon.tsx
│ │ │ │ └── FacebookLogoIcon.tsx
│ │ │ ├── form
│ │ │ │ ├── FormErrorList.tsx
│ │ │ │ ├── useForm.ts
│ │ │ │ ├── InputContentEditable.tsx
│ │ │ │ └── Form.tsx
│ │ │ ├── focus
│ │ │ │ └── useAutoFocus.ts
│ │ │ ├── pwa
│ │ │ │ ├── InstallPwaProvider.tsx
│ │ │ │ ├── useInstallPwa.ts
│ │ │ │ └── InstallPwaDialog.tsx
│ │ │ ├── feedback
│ │ │ │ └── WarningFeedback.tsx
│ │ │ ├── logo
│ │ │ │ ├── Logo.tsx
│ │ │ │ └── LogoIcon.tsx
│ │ │ ├── keyboard
│ │ │ │ └── useKeyboardEvent.ts
│ │ │ └── dialog
│ │ │ │ └── AlertDialog.tsx
│ │ └── routing
│ │ │ ├── useIsPathActive.ts
│ │ │ ├── useRouterAction.ts
│ │ │ └── RouterActions.tsx
│ ├── auth
│ │ └── data-access
│ │ │ ├── OAuthProvider.ts
│ │ │ └── AuthDataAccess.ts
│ └── marketing
│ │ └── shared
│ │ └── ui
│ │ ├── HeroHeading.tsx
│ │ ├── HeroCopy.tsx
│ │ ├── ShowContentTransition.tsx
│ │ ├── Footer.tsx
│ │ ├── MainMenuMobile.tsx
│ │ ├── MainMenu.tsx
│ │ └── Header.tsx
├── mdx-components.tsx
└── middleware.ts
├── public
├── logo-380x380.png
├── tweet-card.png
├── logo-text-512x512.png
├── pwa-images
│ ├── favicon-196.png
│ ├── apple-icon-180.png
│ ├── apple-splash-640-1136.jpg
│ ├── apple-splash-750-1334.jpg
│ ├── apple-splash-828-1792.jpg
│ ├── apple-splash-1125-2436.jpg
│ ├── apple-splash-1170-2532.jpg
│ ├── apple-splash-1179-2556.jpg
│ ├── apple-splash-1242-2208.jpg
│ ├── apple-splash-1242-2688.jpg
│ ├── apple-splash-1284-2778.jpg
│ ├── apple-splash-1290-2796.jpg
│ ├── apple-splash-1536-2048.jpg
│ ├── apple-splash-1620-2160.jpg
│ ├── apple-splash-1668-2224.jpg
│ ├── apple-splash-1668-2388.jpg
│ ├── apple-splash-2048-2732.jpg
│ ├── manifest-icon-192.maskable.png
│ └── manifest-icon-512.maskable.png
├── images
│ └── marketing
│ │ └── features
│ │ ├── features-img-01.png
│ │ ├── features-img-02.png
│ │ ├── features-img-03.png
│ │ ├── features-img-04.png
│ │ ├── features-img-05.png
│ │ └── features-img-06.png
├── manifest.json
└── logo.svg
├── postcss.config.js
├── prisma
├── migrations
│ ├── 20230813195450_user_remove_provider_unique
│ │ └── migration.sql
│ ├── 20230817173940_user_provider_optional
│ │ └── migration.sql
│ ├── 20231112201020_user_timezone_optional
│ │ └── migration.sql
│ ├── migration_lock.toml
│ ├── 20231123225304_project_change_is_archived_to_archived_at
│ │ └── migration.sql
│ ├── 20230721144417_init
│ │ └── migration.sql
│ ├── 20231123220024_task_change_is_completed_to_completed_at
│ │ └── migration.sql
│ ├── 20230727193118_project
│ │ └── migration.sql
│ └── 20230801201849_task
│ │ └── migration.sql
└── schema.prisma
├── .env.local.example
├── .prettierignore
├── .prettierrc
├── next.config.js
├── tailwind.config.js
├── .env.example
├── .github
└── workflows
│ ├── preview-deploy.yaml
│ └── production-deploy.yaml
├── .gitignore
├── tsconfig.json
├── LICENSE
├── package.json
└── README.md
/supabase/seed.sql:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v22.19.0
2 |
--------------------------------------------------------------------------------
/supabase/.gitignore:
--------------------------------------------------------------------------------
1 | # Supabase
2 | .branches
3 | .temp
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["next/core-web-vitals", "prettier"]
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/app/@dialog/page.tsx:
--------------------------------------------------------------------------------
1 | export default function Page() {
2 | return null;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/src/app/favicon.ico
--------------------------------------------------------------------------------
/public/logo-380x380.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/logo-380x380.png
--------------------------------------------------------------------------------
/public/tweet-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/tweet-card.png
--------------------------------------------------------------------------------
/src/app/app/@dialog/default.tsx:
--------------------------------------------------------------------------------
1 | export default function Default() {
2 | return null;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/app/@dialog/(.)projects/page.tsx:
--------------------------------------------------------------------------------
1 | export default function Page() {
2 | return null;
3 | }
4 |
--------------------------------------------------------------------------------
/public/logo-text-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/logo-text-512x512.png
--------------------------------------------------------------------------------
/src/app/app/@dialog/(.)projects/default.tsx:
--------------------------------------------------------------------------------
1 | export default function Default() {
2 | return null;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/app/@dialog/[...catchAll]/page.tsx:
--------------------------------------------------------------------------------
1 | export default function Page() {
2 | return null;
3 | }
4 |
--------------------------------------------------------------------------------
/public/pwa-images/favicon-196.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/favicon-196.png
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/prisma/migrations/20230813195450_user_remove_provider_unique/migration.sql:
--------------------------------------------------------------------------------
1 | -- DropIndex
2 | DROP INDEX "User_provider_key";
3 |
--------------------------------------------------------------------------------
/public/pwa-images/apple-icon-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-icon-180.png
--------------------------------------------------------------------------------
/src/features/app/tasks/ui/TaskCheckSize.tsx:
--------------------------------------------------------------------------------
1 | export enum TaskCheckSize {
2 | Medium = 'Medium',
3 | Large = 'Large',
4 | }
5 |
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-640-1136.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-640-1136.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-750-1334.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-750-1334.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-828-1792.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-828-1792.jpg
--------------------------------------------------------------------------------
/.env.local.example:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_URL=http://localhost:3000
2 | NEXT_PUBLIC_SUPABASE_URL=http://localhost:54321
3 | NEXT_PUBLIC_SUPABASE_ANON_KEY=
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1125-2436.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1125-2436.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1170-2532.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1170-2532.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1179-2556.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1179-2556.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1242-2208.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1242-2208.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1242-2688.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1242-2688.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1284-2778.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1284-2778.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1290-2796.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1290-2796.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1536-2048.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1536-2048.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1620-2160.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1620-2160.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1668-2224.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1668-2224.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-1668-2388.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-1668-2388.jpg
--------------------------------------------------------------------------------
/public/pwa-images/apple-splash-2048-2732.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/apple-splash-2048-2732.jpg
--------------------------------------------------------------------------------
/src/features/shared/data-access/cuid2.ts:
--------------------------------------------------------------------------------
1 | import { init } from '@paralleldrive/cuid2';
2 |
3 | export const cuid2 = init({ length: 8 });
4 |
--------------------------------------------------------------------------------
/public/pwa-images/manifest-icon-192.maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/manifest-icon-192.maskable.png
--------------------------------------------------------------------------------
/public/pwa-images/manifest-icon-512.maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/pwa-images/manifest-icon-512.maskable.png
--------------------------------------------------------------------------------
/prisma/migrations/20230817173940_user_provider_optional/migration.sql:
--------------------------------------------------------------------------------
1 | -- AlterTable
2 | ALTER TABLE "User" ALTER COLUMN "provider" DROP NOT NULL;
3 |
--------------------------------------------------------------------------------
/prisma/migrations/20231112201020_user_timezone_optional/migration.sql:
--------------------------------------------------------------------------------
1 | -- AlterTable
2 | ALTER TABLE "User" ADD COLUMN "timeZone" VARCHAR(100);
3 |
--------------------------------------------------------------------------------
/src/app/app/page.tsx:
--------------------------------------------------------------------------------
1 | import { redirect } from 'next/navigation';
2 |
3 | export default function AppPage() {
4 | redirect('/app/today');
5 | }
6 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | /.next
2 | /.vercel
3 | /build
4 | /out
5 | /public
6 |
7 | .DS_Store
8 | .env*.local
9 | *.pem
10 | *.tsbuildinfo
11 | next-env.d.ts
--------------------------------------------------------------------------------
/public/images/marketing/features/features-img-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/images/marketing/features/features-img-01.png
--------------------------------------------------------------------------------
/public/images/marketing/features/features-img-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/images/marketing/features/features-img-02.png
--------------------------------------------------------------------------------
/public/images/marketing/features/features-img-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/images/marketing/features/features-img-03.png
--------------------------------------------------------------------------------
/public/images/marketing/features/features-img-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/images/marketing/features/features-img-04.png
--------------------------------------------------------------------------------
/public/images/marketing/features/features-img-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/images/marketing/features/features-img-05.png
--------------------------------------------------------------------------------
/public/images/marketing/features/features-img-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flsilva/opentask/HEAD/public/images/marketing/features/features-img-06.png
--------------------------------------------------------------------------------
/src/features/shared/ui/control/dropdown/Menu.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 | import 'client-only';
3 |
4 | import { Menu } from '@headlessui/react';
5 | export { Menu };
6 |
--------------------------------------------------------------------------------
/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (i.e. Git)
3 | provider = "postgresql"
--------------------------------------------------------------------------------
/src/features/auth/data-access/OAuthProvider.ts:
--------------------------------------------------------------------------------
1 | export enum OAuthProvider {
2 | Github = 'github',
3 | Google = 'google',
4 | Linkedin = 'linkedin',
5 | Twitter = 'twitter',
6 | }
7 |
--------------------------------------------------------------------------------
/src/app/app/main-menu/page.tsx:
--------------------------------------------------------------------------------
1 | import { MainMenu } from '@/features/app/shared/ui/MainMenu';
2 |
3 | export default function MainMenuPage() {
4 | return
This page could not be found.
6 |6 | We couldn't find that task. 7 |
8 |6 | We couldn't find that project. 7 |
8 |6 | We couldn't find that task. 7 |
8 |6 | We couldn't find that project. 7 |
8 |{children}
7 | ); 8 | -------------------------------------------------------------------------------- /src/features/app/today/ui/TodayPageHeader.tsx: -------------------------------------------------------------------------------- 1 | import { format } from 'date-fns'; 2 | 3 | export const TodayPageHeader = () => ( 4 |{format(new Date(), 'iii MMM d')}
8 |No tasks in this project.
; 17 | }; 18 | -------------------------------------------------------------------------------- /src/app/(marketing)/layout.tsx: -------------------------------------------------------------------------------- 1 | import '../globals.css'; 2 | import { Header } from '@/features/marketing/shared/ui/Header'; 3 | import { Footer } from '@/features/marketing/shared/ui/Footer'; 4 | 5 | export default function MarketingLayout({ children }: { children: React.ReactNode }) { 6 | return ( 7 | <> 8 |No active projects.
; 8 | 9 | return ( 10 | <> 11 |No archived projects.
; 8 | 9 | return ( 10 | <> 11 |This page could not be found.
16 | 17 | Return Home 18 | 19 |
26 | You're offline.
27 |
28 | Please check your internet connection.
29 |
21 | {error.message} 22 |
23 | ))} 24 |You don't have any projects yet.
17 | 18 | Create your first! 19 | 20 | > 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenTask", 3 | "short_name": "OpenTask", 4 | "description": "Free and Open Source Task Manager.", 5 | "theme_color": "#FFF", 6 | "background_color": "#FFF", 7 | "start_url": "/", 8 | "display": "fullscreen", 9 | "orientation": "portrait", 10 | "icons": [ 11 | { 12 | "src": "/pwa-images/manifest-icon-192.maskable.png", 13 | "sizes": "192x192", 14 | "type": "image/png", 15 | "purpose": "any" 16 | }, 17 | { 18 | "src": "/pwa-images/manifest-icon-192.maskable.png", 19 | "sizes": "192x192", 20 | "type": "image/png", 21 | "purpose": "maskable" 22 | }, 23 | { 24 | "src": "/pwa-images/manifest-icon-512.maskable.png", 25 | "sizes": "512x512", 26 | "type": "image/png", 27 | "purpose": "any" 28 | }, 29 | { 30 | "src": "/pwa-images/manifest-icon-512.maskable.png", 31 | "sizes": "512x512", 32 | "type": "image/png", 33 | "purpose": "maskable" 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /prisma/migrations/20230801201849_task/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "Task" ( 3 | "id" VARCHAR(32) NOT NULL, 4 | "name" VARCHAR(500) NOT NULL, 5 | "description" VARCHAR(2000), 6 | "dueDate" TIMESTAMP(3), 7 | "isCompleted" BOOLEAN NOT NULL DEFAULT false, 8 | "projectId" VARCHAR(32) NOT NULL, 9 | "authorId" UUID NOT NULL, 10 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 11 | "updatedAt" TIMESTAMP(3), 12 | 13 | CONSTRAINT "Task_pkey" PRIMARY KEY ("id") 14 | ); 15 | 16 | -- CreateIndex 17 | CREATE INDEX "Task_dueDate_isCompleted_authorId_projectId_idx" ON "Task"("dueDate", "isCompleted", "authorId", "projectId"); 18 | 19 | -- AddForeignKey 20 | ALTER TABLE "Task" ADD CONSTRAINT "Task_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; 21 | 22 | -- AddForeignKey 23 | ALTER TABLE "Task" ADD CONSTRAINT "Task_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; 24 | -------------------------------------------------------------------------------- /src/features/shared/ui/logo/LogoIcon.tsx: -------------------------------------------------------------------------------- 1 | export const LogoIcon = (props: React.SVGPropsArchived
25 |{error.message}
17 | 26 |We just emailed a link to {getEmailText()}.
17 |Click on it, and you'll be signed in.
18 |19 | If you don't see it, you may need to{' '} 20 | check your spam folder. 21 |
22 |