This is a Next.js project bootstrapped with create-next-app
.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx
. The page auto-updates as you edit the file.
This project uses next/font
to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
A minimalist note management application built with Next.js.
Designed for clarity, maintainability, and strict adherence to requirements.
NoteHub allows users to:
- Create, search, and view notes
- Filter notes by topic
- Navigate through paginated results
- Create notes via modal form
- Experience smooth input UX with debounced search
- Next.js (App Router)
- TypeScript
- TanStack Query
- Formik + Yup
- CSS Modules
- React Hot Toast
app/
├── notes/
│ └── Notes.client.tsx // Main client-side component
components/
├── NoteForm/ // Note creation form
├── NoteList/ // List of notes
├── SearchBox/ // Search input with debounce
├── Pagination/ // Pagination controls
├── Modal/ // Modal wrapper
lib/
├── api.ts // API functions
types/
├── note.ts // Type definitions (Note, NoteTag, UpdateNoteParams)
npm install
npm run dev
- Deployed via Vercel
- SSR enabled
- Build passes successfully (
npm run build
) - Environment variables must be configured manually
updateNote
usesPATCH
with optional fields viaUpdateNoteParams
QueryClient
is initialized insideTanStackProvider
usinguseState
for safe concurrent renderingSearchBox
separatessearchInput
(UX state) fromtopic
(query trigger)- Debounced search implemented via
useEffect
for smooth typing experience - All types unified through
NoteTag
without duplication
Mykhaylo
Former heavy-lift sea captain, now full-stack developer.
Focused on clean architecture, minimalism, and precise execution.
Committed to clarity, dignity, and disciplined development.