How dannick10/yksync_frontend works
Purpose and runtime
YkSynck is a Next.js/TypeScript frontend for project management: projects, technology stacks, task Kanban boards, schedules, and productivity views. It runs as a browser-rendered Next application and consumes a separate Express/MongoDB REST backend. The app entry shell is src/app/layout.tsx; the public landing entry is src/app/(public)/page.tsx; authenticated work begins at src/app/(private)/dashboard/page.tsx.
Route and access boundary
The App Router divides marketing/authentication from protected product routes:
• Public pages and sign-in/register live under src/app/(public)/ and src/app/(public)/(auth)/.
• Protected dashboard, profile, and project workflows live under src/app/(private)/, with shared private chrome in src/app/(private)/layout.tsx.
• src/middleware.ts is the request-time authentication/route-guard boundary.
Application state and API integration
Redux Toolkit centralizes client state in src/redux/store.ts. Domain slices model authenticated identity and core entities: src/redux/slices/AuthSlices.ts, src/redux/slices/ProjectSlices.ts, and src/redux/slices/TaskSlice.ts. Corresponding service modules make REST calls to the external backend, including src/redux/services/AuthService.ts, src/redux/services/projectService.ts, and src/redux/services/TaskService.ts. src/utils/useBaseApi.ts is the likely shared API client/configuration boundary.
Authentication and identity
Sign-in and registration screens are src/app/(public)/(auth)/signin/page.tsx and src/app/(public)/(auth)/register/page.tsx. Frontend auth state is handled through the auth slice/service; the backend owns JWT issuance, password hashing with Bcrypt, and MongoDB persistence. Profile viewing/editing is isolated in src/app/(private)/perfil/page.tsx and src/app/(private)/perfil/edit/page.tsx.
Project lifecycle
Projects are created, listed, inspected, and edited through route-specific screens: src/app/(private)/projects/new/page.tsx, src/app/(private)/projects/[id]/page.tsx, and src/app/(private)/projects/edit/[id]/page.tsx. Validation/schema concerns are colocated in src/app/(private)/projects/schema/ProjectSchema.ts. Project records connect deadlines, links, stacks, statuses, and tasks; project state/API modules mediate persistence.
Task execution and planning
A project detail flow renders task management, including draggable Kanban behavior through src/components/DraggableTaskItem.tsx, src/components/Droppable.tsx, and src/components/TaskComponent.tsx. Task movement updates task/status state and persists through the task service. Calendar and deadline visualization are provided by src/components/MyFullCalendar.tsx; date normalization is separated in src/utils/configureTime.ts.
Analytics and technology modeling
Dashboard-oriented views compose project/task data into counts, charts, and stack statistics via src/components/ChartComponent.tsx, src/components/DisplayCountProject.tsx, and src/components/StackStatistics.tsx. Technologies and task statuses are independent API/state domains, represented by src/redux/services/stackService.ts, src/redux/services/statusService.ts, src/redux/slices/stackSlices.ts, and src/redux/slices/statusSlices.ts.
UI composition
Global providers and CSS are installed at src/app/provider.tsx and src/app/globals.css. Reusable navigation/layout components (src/components/Header.tsx, src/components/LayoutDisplay.tsx) serve product pages, while public marketing sections are intentionally isolated under src/app/(public)/components/. Tailwind CSS provides styling; Framer Motion, dnd-kit, Calendar.js, and Chart.js support the interactive presentation layer.
Main entry points: layout.tsx Private chrome · dashboard/page.tsx Dashboard · [id]/page.tsx Project lifecycle · store.ts Redux store
Components 20
App Router
Public and protected route boundary.
- App shell
src/app/layout.tsx - Global providers
src/app/provider.tsx - Route guard · Enforces authentication for protected routes.
src/middleware.ts - Public & auth routes · Marketing, sign-in, and registration screens.
- Private chrome · Shared layout for authenticated product routes.
src/app/(private)/layout.tsx - Dashboard · Productivity and project overview.
src/app/(private)/dashboard/page.tsx - Profile workflow · View and edit authenticated user identity.
src/app/(private)/perfil/page.tsx - Project lifecycle · Create, inspect, and edit projects.
src/app/(private)/projects/[id]/page.tsx - Project schema
src/app/(private)/projects/schema/ProjectSchema.ts
State & API
Redux domains and REST integration.
- Redux store · Central client-state composition.
src/redux/store.ts - Auth domain · Identity state and authentication REST calls.
src/redux/slices/AuthSlices.ts - Project domain · Project state and persistence.
src/redux/slices/ProjectSlices.ts - Task domain · Task state, status updates, and persistence.
src/redux/slices/TaskSlice.ts - Stack & status domains · Technology and task-status reference data.
src/redux/services/stackService.ts - API client · Shared external-backend request configuration.
src/utils/useBaseApi.ts
Product UI
Shared interactive product components.
- Kanban task board · Moves tasks between statuses.
src/components/DraggableTaskItem.tsx - Calendar & deadlines · Visualizes task and project dates.
src/components/MyFullCalendar.tsx - Analytics widgets · Counts, charts, and stack statistics.
src/components/ChartComponent.tsx - Product navigation
src/components/LayoutDisplay.tsx
Other components
- Express / MongoDB backend · Owns JWTs, credentials, and persistent domain data.
Connections 29
- App shell → Global providers: installs
- App shell → Public & auth routes: renders
- App shell → Private chrome: renders
- Route guard → Private chrome: authorizes access
- Private chrome → Dashboard: hosts
- Private chrome → Profile workflow: hosts
- Private chrome → Project lifecycle: hosts
- Private chrome → Product navigation: uses
- Global providers → Redux store: provides
- Public & auth routes → Auth domain: sign-in/register
- Profile workflow → Auth domain: reads and updates identity
- Project lifecycle → Project schema: validates
- Project lifecycle → Project domain: loads and saves
- Project lifecycle → Kanban task board: renders
- Project lifecycle → Calendar & deadlines: renders
- Dashboard → Analytics widgets: renders
- Dashboard → Project domain: reads projects
- Dashboard → Task domain: reads tasks
- Dashboard → Stack & status domains: reads statistics data
- Kanban task board → Task domain: updates task status
- Redux store → Auth domain: contains
- Redux store → Project domain: contains
- Redux store → Task domain: contains
- Redux store → Stack & status domains: contains
- Auth domain → API client: requests
- Project domain → API client: requests
- Task domain → API client: requests
- Stack & status domains → API client: requests
- API client → Express / MongoDB backend: REST