An open API service indexing awesome lists of open source software.

https://github.com/keyyard/today-notes

Today Notes is a lightweight, daily task management application built using Next.js, React, TailwindCSS, Prisma, and Postgresql - Supabase. It allows users to create tasks that expire in 24 hours, providing a clean and minimalist interface with support for dark and light themes.
https://github.com/keyyard/today-notes

eslint next next-auth next-rpc nextauth nextjs node postcss postgresql prisma prisma-orm react react-dom reactjs sql tailwindcss typescript

Last synced: 19 days ago
JSON representation

Today Notes is a lightweight, daily task management application built using Next.js, React, TailwindCSS, Prisma, and Postgresql - Supabase. It allows users to create tasks that expire in 24 hours, providing a clean and minimalist interface with support for dark and light themes.

Awesome Lists containing this project

README

          

# Today Notes

Today Notes is a modern, minimalist daily task manager built with **Next.js 14 App Router**, **React**, **TailwindCSS**, **Prisma**, and **PostgreSQL (Supabase)**. Tasks expire in 24 hours, encouraging focus and productivity—no more endless backlogs!



Next.js 14


React


Styling: TailwindCSS


ORM: Prisma


Database: Supabase PostgreSQL


Auth: NextAuth (Google)

---

## 🧠 Why "Today Notes"?

**Today Notes** is based on the psychology of immediacy: we procrastinate less when tasks are urgent and actionable. By limiting your list to today, you focus on what matters now. Tasks expire after 24 hours, so you can’t put them off—tomorrow is a new slate.

---

## ✨ Features

- **Google Auth**: Secure login with Google via NextAuth.
- **Task CRUD**: Add, complete, re-add, and auto-expire tasks.
- **Optimistic UI**: Instant feedback for all actions.
- **Theme Switcher**: Light/dark mode with persistent preference.
- **Global State**: Context + custom hooks for task management.
- **Type Safety**: Centralized types, strict API contracts.
- **Error Handling**: User-friendly errors and defensive state.
- **Prisma ORM**: PostgreSQL (Supabase) for robust persistence.
- **Modern Styling**: TailwindCSS, accessible, responsive.
- **Developer Experience**: Barrel exports, clean imports, clear docs.

---

## 🛠️ Tech Stack

- **Frontend**: Next.js 14 App Router, React, TailwindCSS
- **Backend**: Next.js API Routes, Prisma, PostgreSQL (Supabase)
- **Auth**: NextAuth (Google provider)
- **State**: React Context, custom hooks
- **Notifications**: react-hot-toast
- **Testing**: Jest, React Testing Library (see `src/__tests__`)

---

## 🖼️ Screenshots




Home
Task List
Dark Mode
Expired Tasks


Home
Task List
Dark Mode
Expired Tasks


---

## 📝 Usage

- **Login via Google:** Click the `Login with Google` button.
- **Add Task:** Click the floating `+` and enter your task.
- **Mark as Done:** Click a task to complete it.
- **Re-add Expired:** Click an expired task to move it back to active.
- **Expiry:** Tasks expire after 24h, deleted after 48h.
- **Theme:** Toggle light/dark mode with the switcher.

---

## 🧩 Architecture & Best Practices

- **Atomic Components:** UI is broken into small, reusable pieces.
- **Centralized Types:** All types in `src/types` for consistency.
- **Repository Pattern:** Data access is abstracted for testability.
- **Service Layer:** Business logic is separated from UI and data.
- **Context & Hooks:** Global state and logic via context/providers and custom hooks.
- **Barrel Exports:** Clean, maintainable imports.
- **Error Handling:** Defensive code, user-friendly errors.
- **Client/Server Boundaries:** "use client" only where needed.

---

## Architecture Flow

```
1. User interacts with UI (e.g., adds a task).
v
2. Service layer (frontend) sends request to API (e.g., TaskAPIService).
v
3. API Route/Handler receives the request and calls the repository.
v
4. Repository layer interacts with the database (e.g., TaskRepository).
v
5. Database layer (e.g., PostgreSQL) stores the data.
```

## 📄 License

MIT. See [LICENSE](LICENSE).

---

**Enjoy a focused, productive day with Today Notes!**