{"id":19867081,"url":"https://github.com/azurespheredev/blen-fullstack-engineer-take-home","last_synced_at":"2026-04-11T17:39:32.763Z","repository":{"id":259646429,"uuid":"860416472","full_name":"azurespheredev/blen-fullstack-engineer-take-home","owner":"azurespheredev","description":"Take-home coding challenge for Next.js Full Stack Engineer Position","archived":false,"fork":false,"pushed_at":"2024-10-27T10:08:55.000Z","size":504,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T06:34:54.863Z","etag":null,"topics":["drizzle-orm","eslint","husky","jest","nextjs14","prettier","shadcn-ui","sqlite","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/azurespheredev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-20T11:53:20.000Z","updated_at":"2024-10-27T10:08:59.000Z","dependencies_parsed_at":"2024-11-12T10:48:34.503Z","dependency_job_id":"22553ea9-1587-4948-a1d8-a26b28140ac8","html_url":"https://github.com/azurespheredev/blen-fullstack-engineer-take-home","commit_stats":null,"previous_names":["blitzsprinter/blen-fullstack-engineer-take-home","azurespheredev/blen-fullstack-engineer-take-home"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/azurespheredev/blen-fullstack-engineer-take-home","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azurespheredev%2Fblen-fullstack-engineer-take-home","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azurespheredev%2Fblen-fullstack-engineer-take-home/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azurespheredev%2Fblen-fullstack-engineer-take-home/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azurespheredev%2Fblen-fullstack-engineer-take-home/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/azurespheredev","download_url":"https://codeload.github.com/azurespheredev/blen-fullstack-engineer-take-home/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/azurespheredev%2Fblen-fullstack-engineer-take-home/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31689762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["drizzle-orm","eslint","husky","jest","nextjs14","prettier","shadcn-ui","sqlite","tailwindcss","typescript"],"created_at":"2024-11-12T15:28:17.883Z","updated_at":"2026-04-11T17:39:32.742Z","avatar_url":"https://github.com/azurespheredev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Personal Task Manager (Solution) – Full Stack Engineer Code Challenge\n\n\u003cimg alt=\"screenshot\" src=\"public/screenshot.jpg\" /\u003e\n\n## Overview\n\n**Personal Task Manager** built using **Next.js 14+** and **TypeScript**, leveraging modern technologies such as **Drizzle ORM** for SQLite database management and **Tailwind CSS** for styling. The application allows users to manage tasks, providing features such as task creation, editing, and deletion. It also supports task prioritization, making it a robust tool for personal task management.\n\nKey technologies used:\n\n- **Next.js App Router**\n- **SQLite with Drizzle ORM**\n- **Tailwind CSS**\n- **shadcn/ui** for pre-built components\n- **TanStack Query** for efficient data fetching\n- **Jest** for unit testing\n- **ESLint** and **Husky** for code linting and pre-commit checks\n- **Prettier** for code formatting\n\n## Features\n\n### 1. Task List Page (`/`)\n\n- Displays a list of tasks using a server component.\n- Each task shows its title, priority, due date, creation date and update date.\n- Includes a button to add a new task (client component).\n- Implements a refresh mechanism to update the task list.\n\n### 2. Add Task Page (`/add`)\n\n- Users can input the following:\n  - **Task Title**\n  - **Description**\n  - **Priority**\n  - **Due Date**\n- Form submission is handled through server actions and mutations.\n- Validates inputs before saving.\n- Persists the task to the SQLite database via Drizzle ORM.\n\n### 3. Task Detail Page (`/[id]`)\n\n- Displays full details of the selected task using a server component.\n- Provides options to **toggle status**, **edit** or **delete** the task using client components and server actions.\n\n### 4. Edit Task Page (`/[id]/edit`)\n\n- Allows users to modify task details.\n- Updates the task in the local SQLite database using Drizzle ORM.\n\n### Additional Features\n\n1. **Task Prioritization**: Users can set priorities for tasks (Low, Medium, High, Urgent)\n2. **Optimistic Updates**: Provides a smoother user experience by updating the UI optimistically.\n3. **Efficient Data Fetching**: Utilizes **TanStack Query** for efficient data fetching, caching, optimistic updates, and cache invalidation.\n4. **Unit Testing**: Added **Jest** unit tests for key components and server actions.\n5. **Husky** Integration: Ensures pre-commit checks using ESLint.\n\n## Installation \u0026 Setup\n\n### Step 1: Clone the repository\n\n```bash\ngit clone https://github.com/azuresphere7/blen-fullstack-engineer-take-home.git\ncd blen-fullstack-engineer-take-home\n```\n\n### Step 2: Install dependencies\n\n```bash\npnpm install\n```\n\n### Step 3: Run database migrations\n\n```bash\npnpm migrate\n# or\npnpm drizzle-kit migrate\n```\n\n### Step 4: Start the development server\n\n```bash\npnpm dev\n```\n\n### Step 5: (Optional) Manage database using Drizzle Studio\n\nFor easier management of the SQLite database, you can use **Drizzle Studio**:\n\n```bash\npnpm studio\n# or\npnpm drizzle-kit studio\n```\n\n\u003e **Note:**  \n\u003e If you modify the database schema, generate new Drizzle artifacts by running:\n\u003e\n\u003e ```bash\n\u003e pnpm generate\n\u003e # or\n\u003e pnpm drizzle-kit generate\n\u003e ```\n\u003e\n\u003e Then, apply the changes to the database:\n\u003e\n\u003e ```bash\n\u003e pnpm migrate\n\u003e # or\n\u003e pnpm drizzle-kit migrate\n\u003e ```\n\n### Step 6: Lint the code\n\nYou can make sure the code keeps the best practices by running the linter:\n\n```bash\npnpm lint\n```\n\n### Step 7: Test the components and actions\n\nYou can also test the components and server side actions by running:\n\n```bash\npnpm test\n```\n\n## Project Structure\n\nThe project follows a structured folder organization to ensure scalability and maintainability:\n\n```\n├── public/                 # Static assets\n├── migrations/             # Database migrations\n├── src/\n│   ├── app/                # Next.js routes and components\n│   ├── components/         # Reusable UI components\n│   ├── constants/          # Application constants\n│   ├── data/               # Data management (TanStack Query hooks, etc.)\n│   ├── db/                 # Database schema and Drizzle setup\n│   ├── lib/                # Utility functions and libraries\n│   ├── providers/          # Context and providers\n|   └── styles/             # Global styles (Tailwind config, etc.)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazurespheredev%2Fblen-fullstack-engineer-take-home","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazurespheredev%2Fblen-fullstack-engineer-take-home","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazurespheredev%2Fblen-fullstack-engineer-take-home/lists"}