{"id":50939931,"url":"https://github.com/patriciasegantine/nexus-app","last_synced_at":"2026-06-17T13:02:29.916Z","repository":{"id":267688956,"uuid":"901774726","full_name":"patriciasegantine/nexus-app","owner":"patriciasegantine","description":"Frontend for Nexus Dashboard, a task management app focused on productivity, built with Next.js, React, and TailwindCSS.","archived":false,"fork":false,"pushed_at":"2026-06-14T14:57:10.000Z","size":1333,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-14T16:43:15.742Z","etag":null,"topics":["dashboard","frontend","nextjs","productivity","radixui","react","reactquery","tailwindcss","taskmanagement","typescript","zod"],"latest_commit_sha":null,"homepage":"https://ps-nexus.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patriciasegantine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-11T09:41:35.000Z","updated_at":"2026-06-14T14:32:40.000Z","dependencies_parsed_at":"2025-01-30T18:28:05.083Z","dependency_job_id":"ad7e2b48-a763-4244-9a42-cd6e33cffd78","html_url":"https://github.com/patriciasegantine/nexus-app","commit_stats":null,"previous_names":["patriciasegantine/dashboard-analytics-frontend","patriciasegantine/nexus-dashboard-frontend","patriciasegantine/nexus-dashboard","patriciasegantine/nexus-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/patriciasegantine/nexus-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patriciasegantine%2Fnexus-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patriciasegantine%2Fnexus-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patriciasegantine%2Fnexus-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patriciasegantine%2Fnexus-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patriciasegantine","download_url":"https://codeload.github.com/patriciasegantine/nexus-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patriciasegantine%2Fnexus-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34449283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","frontend","nextjs","productivity","radixui","react","reactquery","tailwindcss","taskmanagement","typescript","zod"],"created_at":"2026-06-17T13:02:28.917Z","updated_at":"2026-06-17T13:02:29.900Z","avatar_url":"https://github.com/patriciasegantine.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nexus\n### Project \u0026 Task Management\n\nA full-stack project management application built with Next.js, featuring authentication, task tracking, Kanban board, and data visualization.\n\n![preview](./public/preview.png)\n\n## Tech Stack\n\n- **Framework:** Next.js 15 (App Router, Server Components, Server Actions)\n- **Language:** TypeScript\n- **Auth:** Auth.js v5 (NextAuth) with Google OAuth + Credentials\n- **Database:** PostgreSQL via Prisma ORM (Neon)\n- **Styling:** Tailwind CSS + shadcn/ui\n- **Email:** Nodemailer via Gmail SMTP\n- **Testing:** Jest (unit + integration)\n\n## Features\n\n- Credential and Google OAuth authentication\n- Password reset flow with email verification\n- Rate limiting on auth endpoints\n- Protected routes via Edge middleware\n- Dark/Light theme\n- Kanban board per project\n- Dashboard with charts and analytics\n- Task filtering, pagination, and tagging\n- Responsive layout with mobile drawers\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18.17+\n- PostgreSQL (local or cloud via Neon/Supabase/Railway)\n\n### Installation\n\n```bash\ngit clone https://github.com/patriciasegantine/nexus-app.git\ncd nexus-app\nnpm install\n```\n\n### Environment variables\n\n```bash\ncp .env.example .env\n```\n\nRequired variables:\n\n```env\nDATABASE_URL=\n\nAUTH_SECRET=\nAUTH_GOOGLE_ID=\nAUTH_GOOGLE_SECRET=\nNEXTAUTH_URL=\n\nGMAIL_USER=\nGMAIL_APP_PASSWORD=\nEMAIL_FROM=\n```\n\n### Database\n\n```bash\nnpm run prisma:migrate\n```\n\n### Running\n\n```bash\nnpm run dev        # development (port 4000)\nnpm run build      # production build\nnpm run start      # production server\n```\n\n### Tests\n\n```bash\nnpm test              # Jest unit + integration tests\nnpm run test:watch    # Jest in watch mode\n```\n\n## Project Structure\n\n```\nsrc/\n├── app/\n│   ├── (auth)/          # login, register, forgot/reset password\n│   └── (dashboard)/     # protected pages (projects, tasks, overview)\n├── actions/             # Server Actions (auth, tasks, projects, settings)\n├── auth/                # Auth.js config (Edge-safe)\n├── components/          # UI components grouped by domain\n│   ├── ui/              # shadcn/ui primitives + shared components\n│   ├── tasks/           # task-card, task-dialog, filters, tags\n│   ├── projects/        # project-card, kanban\n│   ├── overview/        # dashboard charts and stats\n│   └── ...\n├── constants/           # App-wide constants\n├── contexts/            # React contexts\n├── hooks/               # Custom hooks\n├── lib/                 # DB client, mail, rate limiting, utilities\n├── types/               # TypeScript types\n└── validations/         # Zod schemas\n```\n\n## Architecture\n\nThis project follows a **Server-first** architecture using Next.js App Router:\n\n- **Data fetching** — React Server Components query the database directly via Prisma\n- **Mutations** — Server Actions with Zod validation and `revalidatePath` for cache invalidation\n- **Auth** — Auth.js v5 with Edge-compatible middleware for route protection\n- **Email** — Nodemailer dispatched directly from Server Actions (no webhook layer)\n- **IDOR protection** — all queries scoped by `userId`\n\n---\n\n## Migration Notes\n\nThis project started as a **client-only frontend** consuming an external REST API, using React Query for data fetching and Axios for HTTP calls.\n\nIt has since been fully migrated to a **fullstack Next.js application**:\n\n| Before | After |\n|---|---|\n| External REST API | Prisma + PostgreSQL directly |\n| React Query | Server Components + `revalidatePath` |\n| Axios | Server Actions |\n| API webhook for email | Nodemailer in Server Actions |\n| Co-located page components | Domain-grouped components |\n\n---\n\nCreated with ❤️ by Patricia Segantine\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatriciasegantine%2Fnexus-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatriciasegantine%2Fnexus-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatriciasegantine%2Fnexus-app/lists"}