repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
Projectflow
stars
latest
clone command
git clone gitlawb://did:key:z6Mkfh4Y...QBEi/projectflowgit clone gitlawb://did:key:z6Mkfh4Y.../projectflowb3cded1async from playground22h ago| #1 | import { v4 as uuid } from "uuid"; |
| #2 | import type { |
| #3 | User, |
| #4 | Workspace, |
| #5 | Project, |
| #6 | Issue, |
| #7 | Sprint, |
| #8 | Comment, |
| #9 | Activity, |
| #10 | Notification, |
| #11 | Label, |
| #12 | } from "./types"; |
| #13 | |
| #14 | // Users |
| #15 | export const users: User[] = [ |
| #16 | { |
| #17 | id: "u1", |
| #18 | name: "Alex Chen", |
| #19 | email: "alex@projectflow.dev", |
| #20 | avatar: "", |
| #21 | createdAt: "2025-01-15T10:00:00Z", |
| #22 | }, |
| #23 | { |
| #24 | id: "u2", |
| #25 | name: "Sarah Kim", |
| #26 | email: "sarah@projectflow.dev", |
| #27 | avatar: "", |
| #28 | createdAt: "2025-01-20T10:00:00Z", |
| #29 | }, |
| #30 | { |
| #31 | id: "u3", |
| #32 | name: "Marcus Johnson", |
| #33 | email: "marcus@projectflow.dev", |
| #34 | avatar: "", |
| #35 | createdAt: "2025-02-01T10:00:00Z", |
| #36 | }, |
| #37 | { |
| #38 | id: "u4", |
| #39 | name: "Priya Patel", |
| #40 | email: "priya@projectflow.dev", |
| #41 | avatar: "", |
| #42 | createdAt: "2025-02-10T10:00:00Z", |
| #43 | }, |
| #44 | ]; |
| #45 | |
| #46 | // Labels |
| #47 | const projectLabels: Label[] = [ |
| #48 | { id: "l1", name: "Frontend", color: "#6366f1" }, |
| #49 | { id: "l2", name: "Backend", color: "#22c55e" }, |
| #50 | { id: "l3", name: "Design", color: "#f59e0b" }, |
| #51 | { id: "l4", name: "DevOps", color: "#ef4444" }, |
| #52 | { id: "l5", name: "Documentation", color: "#8b5cf6" }, |
| #53 | { id: "l6", name: "Testing", color: "#06b6d4" }, |
| #54 | ]; |
| #55 | |
| #56 | // Workspace |
| #57 | export const workspaces: Workspace[] = [ |
| #58 | { |
| #59 | id: "w1", |
| #60 | name: "ProjectFlow", |
| #61 | ownerId: "u1", |
| #62 | members: [ |
| #63 | { userId: "u1", role: "owner" }, |
| #64 | { userId: "u2", role: "admin" }, |
| #65 | { userId: "u3", role: "member" }, |
| #66 | { userId: "u4", role: "member" }, |
| #67 | ], |
| #68 | }, |
| #69 | ]; |
| #70 | |
| #71 | // Projects |
| #72 | export const projects: Project[] = [ |
| #73 | { |
| #74 | id: "p1", |
| #75 | workspaceId: "w1", |
| #76 | name: "Web Application", |
| #77 | description: |
| #78 | "Main web application for ProjectFlow. Includes the dashboard, project views, and all core features.", |
| #79 | emoji: "🌐", |
| #80 | color: "#6366f1", |
| #81 | visibility: "public", |
| #82 | labels: projectLabels, |
| #83 | }, |
| #84 | { |
| #85 | id: "p2", |
| #86 | workspaceId: "w1", |
| #87 | name: "Mobile App", |
| #88 | description: |
| #89 | "React Native mobile application for iOS and Android platforms.", |
| #90 | emoji: "📱", |
| #91 | color: "#22c55e", |
| #92 | visibility: "public", |
| #93 | labels: projectLabels.slice(0, 4), |
| #94 | }, |
| #95 | { |
| #96 | id: "p3", |
| #97 | workspaceId: "w1", |
| #98 | name: "API & Infrastructure", |
| #99 | description: |
| #100 | "Backend API services, database management, and infrastructure setup.", |
| #101 | emoji: "⚙️", |
| #102 | color: "#f59e0b", |
| #103 | visibility: "private", |
| #104 | labels: projectLabels.slice(1, 5), |
| #105 | }, |
| #106 | ]; |
| #107 | |
| #108 | // Sprints |
| #109 | export const sprints: Sprint[] = [ |
| #110 | { |
| #111 | id: "s1", |
| #112 | projectId: "p1", |
| #113 | name: "Sprint 1 - Foundation", |
| #114 | description: "Core infrastructure and authentication setup", |
| #115 | startDate: "2025-03-01T00:00:00Z", |
| #116 | endDate: "2025-03-14T23:59:59Z", |
| #117 | status: "completed", |
| #118 | }, |
| #119 | { |
| #120 | id: "s2", |
| #121 | projectId: "p1", |
| #122 | name: "Sprint 2 - Core Features", |
| #123 | description: "Implement project views, issue management, and Kanban board", |
| #124 | startDate: "2025-03-15T00:00:00Z", |
| #125 | endDate: "2025-03-28T23:59:59Z", |
| #126 | status: "active", |
| #127 | }, |
| #128 | { |
| #129 | id: "s3", |
| #130 | projectId: "p1", |
| #131 | name: "Sprint 3 - Polish", |
| #132 | description: "UI polish, performance optimization, and bug fixes", |
| #133 | startDate: "2025-03-29T00:00:00Z", |
| #134 | endDate: "2025-04-11T23:59:59Z", |
| #135 | status: "planned", |
| #136 | }, |
| #137 | { |
| #138 | id: "s4", |
| #139 | projectId: "p2", |
| #140 | name: "Mobile Sprint 1", |
| #141 | description: "Initial mobile app setup and navigation", |
| #142 | startDate: "2025-03-15T00:00:00Z", |
| #143 | endDate: "2025-03-28T23:59:59Z", |
| #144 | status: "active", |
| #145 | }, |
| #146 | ]; |
| #147 | |
| #148 | // Issues for Project 1 |
| #149 | const p1Issues: Issue[] = [ |
| #150 | // Backlog |
| #151 | { |
| #152 | id: "i1", |
| #153 | projectId: "p1", |
| #154 | identifier: "WEB-1", |
| #155 | title: "Set up project structure and tooling", |
| #156 | description: |
| #157 | "Initialize the project with Vite, React, TypeScript, and Tailwind CSS. Set up ESLint, Prettier, and pre-commit hooks.", |
| #158 | status: "done", |
| #159 | priority: "high", |
| #160 | type: "task", |
| #161 | assigneeId: "u1", |
| #162 | sprintId: "s1", |
| #163 | labels: ["l1"], |
| #164 | dueDate: "2025-03-05T23:59:59Z", |
| #165 | estimate: 3, |
| #166 | parentId: null, |
| #167 | createdAt: "2025-03-01T10:00:00Z", |
| #168 | updatedAt: "2025-03-04T15:30:00Z", |
| #169 | createdById: "u1", |
| #170 | }, |
| #171 | { |
| #172 | id: "i2", |
| #173 | projectId: "p1", |
| #174 | identifier: "WEB-2", |
| #175 | title: "Implement authentication flow", |
| #176 | description: |
| #177 | "Build login, register, and forgot password pages. Integrate with JWT auth backend.", |
| #178 | status: "done", |
| #179 | priority: "high", |
| #180 | type: "feature", |
| #181 | assigneeId: "u2", |
| #182 | sprintId: "s1", |
| #183 | labels: ["l1", "l2"], |
| #184 | dueDate: "2025-03-10T23:59:59Z", |
| #185 | estimate: 5, |
| #186 | parentId: null, |
| #187 | createdAt: "2025-03-01T10:00:00Z", |
| #188 | updatedAt: "2025-03-09T12:00:00Z", |
| #189 | createdById: "u1", |
| #190 | }, |
| #191 | { |
| #192 | id: "i3", |
| #193 | projectId: "p1", |
| #194 | identifier: "WEB-3", |
| #195 | title: "Design system and component library", |
| #196 | description: |
| #197 | "Create reusable UI components: buttons, inputs, modals, cards, and layout primitives.", |
| #198 | status: "done", |
| #199 | priority: "high", |
| #200 | type: "task", |
| #201 | assigneeId: "u4", |
| #202 | sprintId: "s1", |
| #203 | labels: ["l1", "l3"], |
| #204 | dueDate: "2025-03-12T23:59:59Z", |
| #205 | estimate: 5, |
| #206 | parentId: null, |
| #207 | createdAt: "2025-03-01T10:00:00Z", |
| #208 | updatedAt: "2025-03-11T18:00:00Z", |
| #209 | createdById: "u1", |
| #210 | }, |
| #211 | // Current sprint |
| #212 | { |
| #213 | id: "i4", |
| #214 | projectId: "p1", |
| #215 | identifier: "WEB-4", |
| #216 | title: "Kanban board with drag-and-drop", |
| #217 | description: |
| #218 | "Implement the main Kanban board view with columns for each status. Support drag-and-drop to move issues between columns. Should be smooth at 60fps.", |
| #219 | status: "in-progress", |
| #220 | priority: "urgent", |
| #221 | type: "feature", |
| #222 | assigneeId: "u1", |
| #223 | sprintId: "s2", |
| #224 | labels: ["l1"], |
| #225 | dueDate: "2025-03-20T23:59:59Z", |
| #226 | estimate: 8, |
| #227 | parentId: null, |
| #228 | createdAt: "2025-03-15T10:00:00Z", |
| #229 | updatedAt: "2025-03-18T09:00:00Z", |
| #230 | createdById: "u1", |
| #231 | }, |
| #232 | { |
| #233 | id: "i5", |
| #234 | projectId: "p1", |
| #235 | identifier: "WEB-5", |
| #236 | title: "Issue detail sidebar", |
| #237 | description: |
| #238 | "Build the issue detail view that slides in from the right. Should show all issue fields, comments, and activity.", |
| #239 | status: "in-progress", |
| #240 | priority: "high", |
| #241 | type: "feature", |
| #242 | assigneeId: "u2", |
| #243 | sprintId: "s2", |
| #244 | labels: ["l1"], |
| #245 | dueDate: "2025-03-22T23:59:59Z", |
| #246 | estimate: 5, |
| #247 | parentId: null, |
| #248 | createdAt: "2025-03-15T10:00:00Z", |
| #249 | updatedAt: "2025-03-17T14:00:00Z", |
| #250 | createdById: "u1", |
| #251 | }, |
| #252 | { |
| #253 | id: "i6", |
| #254 | projectId: "p1", |
| #255 | identifier: "WEB-6", |
| #256 | title: "Sprint management view", |
| #257 | description: |
| #258 | "Create sprint planning and management interface. Support creating, starting, and completing sprints.", |
| #259 | status: "todo", |
| #260 | priority: "high", |
| #261 | type: "feature", |
| #262 | assigneeId: "u3", |
| #263 | sprintId: "s2", |
| #264 | labels: ["l1"], |
| #265 | dueDate: "2025-03-25T23:59:59Z", |
| #266 | estimate: 5, |
| #267 | parentId: null, |
| #268 | createdAt: "2025-03-15T10:00:00Z", |
| #269 | updatedAt: "2025-03-15T10:00:00Z", |
| #270 | createdById: "u1", |
| #271 | }, |
| #272 | { |
| #273 | id: "i7", |
| #274 | projectId: "p1", |
| #275 | identifier: "WEB-7", |
| #276 | title: "Backlog view with prioritization", |
| #277 | description: |
| #278 | "Build the backlog view with drag-to-reorder, bulk actions, and sprint assignment.", |
| #279 | status: "todo", |
| #280 | priority: "medium", |
| #281 | type: "feature", |
| #282 | assigneeId: "u4", |
| #283 | sprintId: "s2", |
| #284 | labels: ["l1"], |
| #285 | dueDate: "2025-03-26T23:59:59Z", |
| #286 | estimate: 3, |
| #287 | parentId: null, |
| #288 | createdAt: "2025-03-15T10:00:00Z", |
| #289 | updatedAt: "2025-03-15T10:00:00Z", |
| #290 | createdById: "u1", |
| #291 | }, |
| #292 | { |
| #293 | id: "i8", |
| #294 | projectId: "p1", |
| #295 | identifier: "WEB-8", |
| #296 | title: "Global search and command palette", |
| #297 | description: |
| #298 | "Implement Cmd+K command palette for searching issues, projects, and quick actions.", |
| #299 | status: "in-review", |
| #300 | priority: "medium", |
| #301 | type: "feature", |
| #302 | assigneeId: "u1", |
| #303 | sprintId: "s2", |
| #304 | labels: ["l1"], |
| #305 | dueDate: "2025-03-24T23:59:59Z", |
| #306 | estimate: 3, |
| #307 | parentId: null, |
| #308 | createdAt: "2025-03-15T10:00:00Z", |
| #309 | updatedAt: "2025-03-19T11:00:00Z", |
| #310 | createdById: "u1", |
| #311 | }, |
| #312 | { |
| #313 | id: "i9", |
| #314 | projectId: "p1", |
| #315 | identifier: "WEB-9", |
| #316 | title: "Fix sidebar collapse animation", |
| #317 | description: |
| #318 | "The sidebar collapse animation is janky on slower devices. Need to optimize the transition.", |
| #319 | status: "todo", |
| #320 | priority: "medium", |
| #321 | type: "bug", |
| #322 | assigneeId: "u2", |
| #323 | sprintId: "s2", |
| #324 | labels: ["l1"], |
| #325 | dueDate: "2025-03-22T23:59:59Z", |
| #326 | estimate: 1, |
| #327 | parentId: null, |
| #328 | createdAt: "2025-03-16T14:00:00Z", |
| #329 | updatedAt: "2025-03-16T14:00:00Z", |
| #330 | createdById: "u2", |
| #331 | }, |
| #332 | { |
| #333 | id: "i10", |
| #334 | projectId: "p1", |
| #335 | identifier: "WEB-10", |
| #336 | title: "Notification system", |
| #337 | description: |
| #338 | "Build in-app notification system for assignments, mentions, and sprint updates.", |
| #339 | status: "todo", |
| #340 | priority: "low", |
| #341 | type: "feature", |
| #342 | assigneeId: null, |
| #343 | sprintId: "s2", |
| #344 | labels: ["l1", "l2"], |
| #345 | dueDate: "2025-03-28T23:59:59Z", |
| #346 | estimate: 3, |
| #347 | parentId: null, |
| #348 | createdAt: "2025-03-15T10:00:00Z", |
| #349 | updatedAt: "2025-03-15T10:00:00Z", |
| #350 | createdById: "u1", |
| #351 | }, |
| #352 | // Future sprint / backlog |
| #353 | { |
| #354 | id: "i11", |
| #355 | projectId: "p1", |
| #356 | identifier: "WEB-11", |
| #357 | title: "Analytics dashboard", |
| #358 | description: |
| #359 | "Create a minimal analytics dashboard showing project health, velocity, and completion rates.", |
| #360 | status: "backlog", |
| #361 | priority: "low", |
| #362 | type: "feature", |
| #363 | assigneeId: null, |
| #364 | sprintId: null, |
| #365 | labels: ["l1"], |
| #366 | dueDate: null, |
| #367 | estimate: 5, |
| #368 | parentId: null, |
| #369 | createdAt: "2025-03-15T10:00:00Z", |
| #370 | updatedAt: "2025-03-15T10:00:00Z", |
| #371 | createdById: "u1", |
| #372 | }, |
| #373 | { |
| #374 | id: "i12", |
| #375 | projectId: "p1", |
| #376 | identifier: "WEB-12", |
| #377 | title: "Keyboard shortcuts", |
| #378 | description: |
| #379 | "Implement comprehensive keyboard shortcuts for power users. Navigation, creation, and editing.", |
| #380 | status: "backlog", |
| #381 | priority: "low", |
| #382 | type: "feature", |
| #383 | assigneeId: null, |
| #384 | sprintId: null, |
| #385 | labels: ["l1"], |
| #386 | dueDate: null, |
| #387 | estimate: 3, |
| #388 | parentId: null, |
| #389 | createdAt: "2025-03-15T10:00:00Z", |
| #390 | updatedAt: "2025-03-15T10:00:00Z", |
| #391 | createdById: "u1", |
| #392 | }, |
| #393 | { |
| #394 | id: "i13", |
| #395 | projectId: "p1", |
| #396 | identifier: "WEB-13", |
| #397 | title: "Dark mode toggle", |
| #398 | description: "Add a dark/light mode toggle with system preference detection.", |
| #399 | status: "backlog", |
| #400 | priority: "none", |
| #401 | type: "task", |
| #402 | assigneeId: null, |
| #403 | sprintId: null, |
| #404 | labels: ["l1", "l3"], |
| #405 | dueDate: null, |
| #406 | estimate: 2, |
| #407 | parentId: null, |
| #408 | createdAt: "2025-03-15T10:00:00Z", |
| #409 | updatedAt: "2025-03-15T10:00:00Z", |
| #410 | createdById: "u4", |
| #411 | }, |
| #412 | { |
| #413 | id: "i14", |
| #414 | projectId: "p1", |
| #415 | identifier: "WEB-14", |
| #416 | title: "API integration layer", |
| #417 | description: |
| #418 | "Set up the API client with proper error handling, auth token refresh, and request interceptors.", |
| #419 | status: "todo", |
| #420 | priority: "high", |
| #421 | type: "task", |
| #422 | assigneeId: "u3", |
| #423 | sprintId: "s2", |
| #424 | labels: ["l2"], |
| #425 | dueDate: "2025-03-20T23:59:59Z", |
| #426 | estimate: 3, |
| #427 | parentId: null, |
| #428 | createdAt: "2025-03-15T10:00:00Z", |
| #429 | updatedAt: "2025-03-15T10:00:00Z", |
| #430 | createdById: "u1", |
| #431 | }, |
| #432 | { |
| #433 | id: "i15", |
| #434 | projectId: "p1", |
| #435 | identifier: "WEB-15", |
| #436 | title: "Write API documentation", |
| #437 | description: |
| #438 | "Document all API endpoints with request/response examples using OpenAPI spec.", |
| #439 | status: "backlog", |
| #440 | priority: "low", |
| #441 | type: "task", |
| #442 | assigneeId: null, |
| #443 | sprintId: null, |
| #444 | labels: ["l5"], |
| #445 | dueDate: null, |
| #446 | estimate: 3, |
| #447 | parentId: null, |
| #448 | createdAt: "2025-03-15T10:00:00Z", |
| #449 | updatedAt: "2025-03-15T10:00:00Z", |
| #450 | createdById: "u1", |
| #451 | }, |
| #452 | ]; |
| #453 | |
| #454 | // Issues for Project 2 |
| #455 | const p2Issues: Issue[] = [ |
| #456 | { |
| #457 | id: "i20", |
| #458 | projectId: "p2", |
| #459 | identifier: "MOB-1", |
| #460 | title: "Set up React Native project", |
| #461 | description: "Initialize React Native with Expo and configure for iOS and Android.", |
| #462 | status: "done", |
| #463 | priority: "high", |
| #464 | type: "task", |
| #465 | assigneeId: "u3", |
| #466 | sprintId: "s4", |
| #467 | labels: ["l1"], |
| #468 | dueDate: "2025-03-18T23:59:59Z", |
| #469 | estimate: 3, |
| #470 | parentId: null, |
| #471 | createdAt: "2025-03-15T10:00:00Z", |
| #472 | updatedAt: "2025-03-17T16:00:00Z", |
| #473 | createdById: "u1", |
| #474 | }, |
| #475 | { |
| #476 | id: "i21", |
| #477 | projectId: "p2", |
| #478 | identifier: "MOB-2", |
| #479 | title: "Bottom tab navigation", |
| #480 | description: "Implement the main bottom tab navigation with Home, Projects, and Profile tabs.", |
| #481 | status: "in-progress", |
| #482 | priority: "high", |
| #483 | type: "feature", |
| #484 | assigneeId: "u3", |
| #485 | sprintId: "s4", |
| #486 | labels: ["l1"], |
| #487 | dueDate: "2025-03-22T23:59:59Z", |
| #488 | estimate: 3, |
| #489 | parentId: null, |
| #490 | createdAt: "2025-03-15T10:00:00Z", |
| #491 | updatedAt: "2025-03-19T10:00:00Z", |
| #492 | createdById: "u1", |
| #493 | }, |
| #494 | { |
| #495 | id: "i22", |
| #496 | projectId: "p2", |
| #497 | identifier: "MOB-3", |
| #498 | title: "Mobile issue list view", |
| #499 | description: "Create a scrollable issue list with pull-to-refresh and swipe actions.", |
| #500 | status: "todo", |
| #501 | priority: "medium", |
| #502 | type: "feature", |
| #503 | assigneeId: null, |
| #504 | sprintId: "s4", |
| #505 | labels: ["l1"], |
| #506 | dueDate: "2025-03-25T23:59:59Z", |
| #507 | estimate: 5, |
| #508 | parentId: null, |
| #509 | createdAt: "2025-03-15T10:00:00Z", |
| #510 | updatedAt: "2025-03-15T10:00:00Z", |
| #511 | createdById: "u1", |
| #512 | }, |
| #513 | { |
| #514 | id: "i23", |
| #515 | projectId: "p2", |
| #516 | identifier: "MOB-4", |
| #517 | title: "Push notifications setup", |
| #518 | description: "Configure push notifications for iOS and Android using Expo Notifications.", |
| #519 | status: "backlog", |
| #520 | priority: "low", |
| #521 | type: "task", |
| #522 | assigneeId: null, |
| #523 | sprintId: null, |
| #524 | labels: ["l2"], |
| #525 | dueDate: null, |
| #526 | estimate: 3, |
| #527 | parentId: null, |
| #528 | createdAt: "2025-03-15T10:00:00Z", |
| #529 | updatedAt: "2025-03-15T10:00:00Z", |
| #530 | createdById: "u1", |
| #531 | }, |
| #532 | ]; |
| #533 | |
| #534 | // Issues for Project 3 |
| #535 | const p3Issues: Issue[] = [ |
| #536 | { |
| #537 | id: "i30", |
| #538 | projectId: "p3", |
| #539 | identifier: "API-1", |
| #540 | title: "Set up NestJS project", |
| #541 | description: "Initialize NestJS with TypeScript, configure modules, and set up database connection.", |
| #542 | status: "done", |
| #543 | priority: "high", |
| #544 | type: "task", |
| #545 | assigneeId: "u3", |
| #546 | sprintId: null, |
| #547 | labels: ["l2"], |
| #548 | dueDate: "2025-03-05T23:59:59Z", |
| #549 | estimate: 3, |
| #550 | parentId: null, |
| #551 | createdAt: "2025-03-01T10:00:00Z", |
| #552 | updatedAt: "2025-03-04T12:00:00Z", |
| #553 | createdById: "u1", |
| #554 | }, |
| #555 | { |
| #556 | id: "i31", |
| #557 | projectId: "p3", |
| #558 | identifier: "API-2", |
| #559 | title: "User authentication endpoints", |
| #560 | description: "Implement register, login, refresh token, and password reset endpoints.", |
| #561 | status: "done", |
| #562 | priority: "high", |
| #563 | type: "feature", |
| #564 | assigneeId: "u3", |
| #565 | sprintId: null, |
| #566 | labels: ["l2"], |
| #567 | dueDate: "2025-03-10T23:59:59Z", |
| #568 | estimate: 5, |
| #569 | parentId: null, |
| #570 | createdAt: "2025-03-01T10:00:00Z", |
| #571 | updatedAt: "2025-03-09T18:00:00Z", |
| #572 | createdById: "u1", |
| #573 | }, |
| #574 | { |
| #575 | id: "i32", |
| #576 | projectId: "p3", |
| #577 | identifier: "API-3", |
| #578 | title: "Issue CRUD endpoints", |
| #579 | description: "Build REST API for creating, reading, updating, and deleting issues.", |
| #580 | status: "in-progress", |
| #581 | priority: "high", |
| #582 | type: "feature", |
| #583 | assigneeId: "u3", |
| #584 | sprintId: null, |
| #585 | labels: ["l2"], |
| #586 | dueDate: "2025-03-20T23:59:59Z", |
| #587 | estimate: 5, |
| #588 | parentId: null, |
| #589 | createdAt: "2025-03-10T10:00:00Z", |
| #590 | updatedAt: "2025-03-18T14:00:00Z", |
| #591 | createdById: "u1", |
| #592 | }, |
| #593 | { |
| #594 | id: "i33", |
| #595 | projectId: "p3", |
| #596 | identifier: "API-4", |
| #597 | title: "Set up CI/CD pipeline", |
| #598 | description: "Configure GitHub Actions for testing, building, and deploying to staging.", |
| #599 | status: "todo", |
| #600 | priority: "medium", |
| #601 | type: "task", |
| #602 | assigneeId: "u1", |
| #603 | sprintId: null, |
| #604 | labels: ["l4"], |
| #605 | dueDate: "2025-03-25T23:59:59Z", |
| #606 | estimate: 3, |
| #607 | parentId: null, |
| #608 | createdAt: "2025-03-15T10:00:00Z", |
| #609 | updatedAt: "2025-03-15T10:00:00Z", |
| #610 | createdById: "u1", |
| #611 | }, |
| #612 | { |
| #613 | id: "i34", |
| #614 | projectId: "p3", |
| #615 | identifier: "API-5", |
| #616 | title: "Database migrations", |
| #617 | description: "Set up Prisma migrations for all entities with proper indexing.", |
| #618 | status: "todo", |
| #619 | priority: "medium", |
| #620 | type: "task", |
| #621 | assigneeId: "u3", |
| #622 | sprintId: null, |
| #623 | labels: ["l2"], |
| #624 | dueDate: "2025-03-22T23:59:59Z", |
| #625 | estimate: 2, |
| #626 | parentId: null, |
| #627 | createdAt: "2025-03-15T10:00:00Z", |
| #628 | updatedAt: "2025-03-15T10:00:00Z", |
| #629 | createdById: "u1", |
| #630 | }, |
| #631 | ]; |
| #632 | |
| #633 | export const issues: Issue[] = [...p1Issues, ...p2Issues, ...p3Issues]; |
| #634 | |
| #635 | // Comments |
| #636 | export const comments: Comment[] = [ |
| #637 | { |
| #638 | id: "c1", |
| #639 | issueId: "i4", |
| #640 | userId: "u1", |
| #641 | content: |
| #642 | "I've started with the @dnd-kit library for drag-and-drop. The performance looks promising so far.", |
| #643 | createdAt: "2025-03-16T10:00:00Z", |
| #644 | updatedAt: "2025-03-16T10:00:00Z", |
| #645 | }, |
| #646 | { |
| #647 | id: "c2", |
| #648 | issueId: "i4", |
| #649 | userId: "u2", |
| #650 | content: |
| #651 | "Have you considered the touch support? We need this to work well on tablets too.", |
| #652 | createdAt: "2025-03-16T14:30:00Z", |
| #653 | updatedAt: "2025-03-16T14:30:00Z", |
| #654 | }, |
| #655 | { |
| #656 | id: "c3", |
| #657 | issueId: "i4", |
| #658 | userId: "u1", |
| #659 | content: |
| #660 | "Yes! @dnd-kit has great touch support out of the box. I'll make sure to test on iPad as well.", |
| #661 | createdAt: "2025-03-16T15:00:00Z", |
| #662 | updatedAt: "2025-03-16T15:00:00Z", |
| #663 | }, |
| #664 | { |
| #665 | id: "c4", |
| #666 | issueId: "i5", |
| #667 | userId: "u2", |
| #668 | content: |
| #669 | "The design mockups are ready in Figma. I'll start implementing the sidebar component today.", |
| #670 | createdAt: "2025-03-17T09:00:00Z", |
| #671 | updatedAt: "2025-03-17T09:00:00Z", |
| #672 | }, |
| #673 | { |
| #674 | id: "c5", |
| #675 | issueId: "i5", |
| #676 | userId: "u4", |
| #677 | content: |
| #678 | "I've updated the color tokens in the design system. Make sure to use the new surface-3 color for hover states.", |
| #679 | createdAt: "2025-03-17T11:00:00Z", |
| #680 | updatedAt: "2025-03-17T11:00:00Z", |
| #681 | }, |
| #682 | { |
| #683 | id: "c6", |
| #684 | issueId: "i8", |
| #685 | userId: "u1", |
| #686 | content: |
| #687 | "The command palette is working well. Added fuzzy search and keyboard navigation. Ready for review.", |
| #688 | createdAt: "2025-03-19T10:00:00Z", |
| #689 | updatedAt: "2025-03-19T10:00:00Z", |
| #690 | }, |
| #691 | { |
| #692 | id: "c7", |
| #693 | issueId: "i9", |
| #694 | userId: "u2", |
| #695 | content: |
| #696 | "I've identified the issue - it's the width transition causing a layout recalculation. Will use transform instead.", |
| #697 | createdAt: "2025-03-17T10:00:00Z", |
| #698 | updatedAt: "2025-03-17T10:00:00Z", |
| #699 | }, |
| #700 | ]; |
| #701 | |
| #702 | // Activities |
| #703 | export const activities: Activity[] = [ |
| #704 | { |
| #705 | id: "a1", |
| #706 | issueId: "i4", |
| #707 | userId: "u1", |
| #708 | type: "status_change", |
| #709 | oldValue: "todo", |
| #710 | newValue: "in-progress", |
| #711 | createdAt: "2025-03-16T09:00:00Z", |
| #712 | }, |
| #713 | { |
| #714 | id: "a2", |
| #715 | issueId: "i4", |
| #716 | userId: "u1", |
| #717 | type: "assignment", |
| #718 | newValue: "u1", |
| #719 | createdAt: "2025-03-15T10:00:00Z", |
| #720 | }, |
| #721 | { |
| #722 | id: "a3", |
| #723 | issueId: "i8", |
| #724 | userId: "u1", |
| #725 | type: "status_change", |
| #726 | oldValue: "in-progress", |
| #727 | newValue: "in-review", |
| #728 | createdAt: "2025-03-19T11:00:00Z", |
| #729 | }, |
| #730 | { |
| #731 | id: "a4", |
| #732 | issueId: "i2", |
| #733 | userId: "u2", |
| #734 | type: "status_change", |
| #735 | oldValue: "in-review", |
| #736 | newValue: "done", |
| #737 | createdAt: "2025-03-09T12:00:00Z", |
| #738 | }, |
| #739 | { |
| #740 | id: "a5", |
| #741 | issueId: "i6", |
| #742 | userId: "u1", |
| #743 | type: "assignment", |
| #744 | newValue: "u3", |
| #745 | createdAt: "2025-03-15T10:30:00Z", |
| #746 | }, |
| #747 | ]; |
| #748 | |
| #749 | // Notifications |
| #750 | export const notifications: Notification[] = [ |
| #751 | { |
| #752 | id: "n1", |
| #753 | userId: "u1", |
| #754 | type: "assignment", |
| #755 | title: "New assignment", |
| #756 | message: "Sarah Kim assigned you to WEB-4 - Kanban board with drag-and-drop", |
| #757 | read: false, |
| #758 | issueId: "i4", |
| #759 | createdAt: "2025-03-15T10:00:00Z", |
| #760 | }, |
| #761 | { |
| #762 | id: "n2", |
| #763 | userId: "u1", |
| #764 | type: "mention", |
| #765 | title: "Mentioned in comment", |
| #766 | message: 'Marcus Johnson mentioned you in a comment on WEB-6: "...need @alex to review the API design"', |
| #767 | read: false, |
| #768 | issueId: "i6", |
| #769 | createdAt: "2025-03-18T14:00:00Z", |
| #770 | }, |
| #771 | { |
| #772 | id: "n3", |
| #773 | userId: "u1", |
| #774 | type: "sprint_started", |
| #775 | title: "Sprint started", |
| #776 | message: 'Sprint 2 - Core Features has started with 8 issues', |
| #777 | read: true, |
| #778 | createdAt: "2025-03-15T09:00:00Z", |
| #779 | }, |
| #780 | { |
| #781 | id: "n4", |
| #782 | userId: "u1", |
| #783 | type: "issue_updated", |
| #784 | title: "Issue updated", |
| #785 | message: "WEB-8 status changed to In Review by Alex Chen", |
| #786 | read: true, |
| #787 | issueId: "i8", |
| #788 | createdAt: "2025-03-19T11:00:00Z", |
| #789 | }, |
| #790 | { |
| #791 | id: "n5", |
| #792 | userId: "u1", |
| #793 | type: "assignment", |
| #794 | title: "New assignment", |
| #795 | message: "You assigned yourself to WEB-8 - Global search and command palette", |
| #796 | read: true, |
| #797 | issueId: "i8", |
| #798 | createdAt: "2025-03-15T10:00:00Z", |
| #799 | }, |
| #800 | ]; |
| #801 | |
| #802 | // Helper to generate IDs |
| #803 | export const generateId = () => uuid(); |
| #804 | |
| #805 | // Helper to generate issue identifiers |
| #806 | export const generateIdentifier = (projectPrefix: string, count: number) => |
| #807 | `${projectPrefix}-${count}`; |
| #808 |