renamed to Sprint

This commit is contained in:
Oliver Bryan
2026-01-16 11:15:38 +00:00
parent b4601a7595
commit 385b85bdb4
95 changed files with 324 additions and 253 deletions

View File

@@ -1,6 +1,6 @@
# eussi
The server for Issue Project Manager
The server for Sprint
To install dependencies:
```bash

View File

@@ -1,5 +1,5 @@
{
"name": "@issue/backend",
"name": "@sprint/backend",
"version": "0.1.0",
"type": "module",
"engines": {
@@ -27,7 +27,7 @@
"typescript": "^5"
},
"dependencies": {
"@issue/shared": "workspace:*",
"@sprint/shared": "workspace:*",
"bcrypt": "^6.0.0",
"dotenv": "^17.2.3",
"drizzle-orm": "^0.45.0",

View File

@@ -1,5 +1,5 @@
import "dotenv/config";
import { Issue, Organisation, OrganisationMember, Project, User } from "@issue/shared";
import { Issue, Organisation, OrganisationMember, Project, User } from "@sprint/shared";
import bcrypt from "bcrypt";
import { drizzle } from "drizzle-orm/node-postgres";

View File

@@ -1,4 +1,4 @@
import { Issue, User } from "@issue/shared";
import { Issue, User } from "@sprint/shared";
import { aliasedTable, and, eq, inArray, sql } from "drizzle-orm";
import { db } from "../client";
@@ -80,7 +80,7 @@ export async function getIssueByNumber(projectId: number, number: number) {
}
export async function getIssueStatusCountByOrganisation(organisationId: number, status: string) {
const { Project } = await import("@issue/shared");
const { Project } = await import("@sprint/shared");
const projects = await db
.select({ id: Project.id })
@@ -99,7 +99,7 @@ export async function getIssueStatusCountByOrganisation(organisationId: number,
}
export async function replaceIssueStatus(organisationId: number, oldStatus: string, newStatus: string) {
const { Project } = await import("@issue/shared");
const { Project } = await import("@sprint/shared");
// get all project IDs for this organisation
const projects = await db

View File

@@ -1,4 +1,4 @@
import { Organisation, OrganisationMember, User } from "@issue/shared";
import { Organisation, OrganisationMember, User } from "@sprint/shared";
import { and, eq } from "drizzle-orm";
import { db } from "../client";

View File

@@ -1,4 +1,4 @@
import { Issue, Organisation, Project, User } from "@issue/shared";
import { Issue, Organisation, Project, User } from "@sprint/shared";
import { eq } from "drizzle-orm";
import { db } from "../client";

View File

@@ -1,4 +1,4 @@
import { Session } from "@issue/shared";
import { Session } from "@sprint/shared";
import { eq, lt } from "drizzle-orm";
import { db } from "../client";

View File

@@ -1,4 +1,4 @@
import { Sprint } from "@issue/shared";
import { Sprint } from "@sprint/shared";
import { eq } from "drizzle-orm";
import { db } from "../client";

View File

@@ -1,4 +1,4 @@
import { TimedSession } from "@issue/shared";
import { TimedSession } from "@sprint/shared";
import { and, desc, eq, isNotNull, isNull } from "drizzle-orm";
import { db } from "../client";

View File

@@ -1,4 +1,4 @@
import { User, type UserRecord } from "@issue/shared";
import { User, type UserRecord } from "@sprint/shared";
import { eq } from "drizzle-orm";
import { db } from "../client";

View File

@@ -1,4 +1,4 @@
import { LoginRequestSchema } from "@issue/shared";
import { LoginRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { buildAuthCookie, generateToken, verifyPassword } from "../../auth/utils";
import { createSession, getUserByUsername } from "../../db/queries";

View File

@@ -1,4 +1,4 @@
import type { UserRecord } from "@issue/shared";
import type { UserRecord } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getUserById } from "../../db/queries";

View File

@@ -1,4 +1,4 @@
import { RegisterRequestSchema } from "@issue/shared";
import { RegisterRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { buildAuthCookie, generateToken, hashPassword } from "../../auth/utils";
import { createSession, createUser, getUserByUsername } from "../../db/queries";

View File

@@ -1,4 +1,4 @@
import { IssueCreateRequestSchema } from "@issue/shared";
import { IssueCreateRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { createIssue, getProjectByID } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { IssueDeleteRequestSchema } from "@issue/shared";
import { IssueDeleteRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { deleteIssue } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { IssueUpdateRequestSchema } from "@issue/shared";
import { IssueUpdateRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { updateIssue } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { IssuesByProjectQuerySchema } from "@issue/shared";
import { IssuesByProjectQuerySchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getIssuesWithUsersByProject, getProjectByID } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { IssuesReplaceStatusRequestSchema } from "@issue/shared";
import { IssuesReplaceStatusRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getOrganisationMemberRole, replaceIssueStatus } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { IssuesStatusCountQuerySchema } from "@issue/shared";
import { IssuesStatusCountQuerySchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getIssueStatusCountByOrganisation, getOrganisationMemberRole } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { OrgAddMemberRequestSchema } from "@issue/shared";
import { OrgAddMemberRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import {
createOrganisationMember,

View File

@@ -1,4 +1,4 @@
import { OrgByIdQuerySchema } from "@issue/shared";
import { OrgByIdQuerySchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getOrganisationById } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { OrgCreateRequestSchema } from "@issue/shared";
import { OrgCreateRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { createOrganisationWithOwner, getOrganisationBySlug } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { OrgDeleteRequestSchema } from "@issue/shared";
import { OrgDeleteRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { deleteOrganisation, getOrganisationById } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { OrgMembersQuerySchema } from "@issue/shared";
import { OrgMembersQuerySchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getOrganisationById, getOrganisationMembers } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { OrgRemoveMemberRequestSchema } from "@issue/shared";
import { OrgRemoveMemberRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getOrganisationById, getOrganisationMemberRole, removeOrganisationMember } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { OrgUpdateMemberRoleRequestSchema } from "@issue/shared";
import { OrgUpdateMemberRoleRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import {
getOrganisationById,

View File

@@ -1,4 +1,4 @@
import { OrgUpdateRequestSchema } from "@issue/shared";
import { OrgUpdateRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getOrganisationById, updateOrganisation } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { ProjectByCreatorQuerySchema } from "@issue/shared";
import { ProjectByCreatorQuerySchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getProjectsByCreatorID, getUserById } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { ProjectByOrgQuerySchema } from "@issue/shared";
import { ProjectByOrgQuerySchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getOrganisationById, getOrganisationsByUserId, getProjectsByOrganisationId } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { ProjectCreateRequestSchema } from "@issue/shared";
import { ProjectCreateRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { createProject, getProjectByKey, getUserById } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { ProjectDeleteRequestSchema } from "@issue/shared";
import { ProjectDeleteRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { deleteProject, getProjectByID } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { ProjectUpdateRequestSchema } from "@issue/shared";
import { ProjectUpdateRequestSchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getProjectByID, getProjectByKey, getUserById, updateProject } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { ProjectByIdQuerySchema } from "@issue/shared";
import { ProjectByIdQuerySchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getProjectWithCreatorByID } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { SprintCreateRequestSchema } from "@issue/shared";
import { SprintCreateRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { createSprint, getOrganisationMemberRole, getProjectByID } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { SprintsByProjectQuerySchema } from "@issue/shared";
import { SprintsByProjectQuerySchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getOrganisationMemberRole, getProjectByID, getSprintsByProject } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { calculateBreakTimeMs, calculateWorkTimeMs, TimerEndRequestSchema } from "@issue/shared";
import { calculateBreakTimeMs, calculateWorkTimeMs, TimerEndRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { endTimedSession, getActiveTimedSession } from "../../db/queries";
import { errorResponse, parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { calculateBreakTimeMs, calculateWorkTimeMs, TimerGetQuerySchema } from "@issue/shared";
import { calculateBreakTimeMs, calculateWorkTimeMs, TimerGetQuerySchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getInactiveTimedSessions } from "../../db/queries";
import { parseQueryParams } from "../../validation";

View File

@@ -3,7 +3,7 @@ import {
calculateWorkTimeMs,
isTimerRunning,
TimerGetQuerySchema,
} from "@issue/shared";
} from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { getActiveTimedSession } from "../../db/queries";
import { parseQueryParams } from "../../validation";

View File

@@ -3,7 +3,7 @@ import {
calculateWorkTimeMs,
isTimerRunning,
TimerToggleRequestSchema,
} from "@issue/shared";
} from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { appendTimestamp, createTimedSession, getActiveTimedSession } from "../../db/queries";
import { parseJsonBody } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { calculateBreakTimeMs, calculateWorkTimeMs, isTimerRunning } from "@issue/shared";
import { calculateBreakTimeMs, calculateWorkTimeMs, isTimerRunning } from "@sprint/shared";
import type { AuthedRequest } from "../auth/middleware";
import { getUserTimedSessions } from "../db/queries";

View File

@@ -1,4 +1,4 @@
import { UserByUsernameQuerySchema } from "@issue/shared";
import { UserByUsernameQuerySchema } from "@sprint/shared";
import type { BunRequest } from "bun";
import { getUserByUsername } from "../../db/queries";
import { errorResponse, parseQueryParams } from "../../validation";

View File

@@ -1,4 +1,4 @@
import { UserUpdateRequestSchema } from "@issue/shared";
import { UserUpdateRequestSchema } from "@sprint/shared";
import type { AuthedRequest } from "../../auth/middleware";
import { hashPassword } from "../../auth/utils";
import { getUserById } from "../../db/queries";

View File

@@ -1,4 +1,4 @@
import type { ApiError } from "@issue/shared";
import type { ApiError } from "@sprint/shared";
import type { z } from "zod";
type ZodSchema<T> = z.ZodSchema<T>;

View File

@@ -6,7 +6,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Issue Project Manager</title>
<title>Sprint</title>
<style>
html,
body {

View File

@@ -1,5 +1,5 @@
{
"name": "@issue/frontend",
"name": "@sprint/frontend",
"version": "0.1.0",
"type": "module",
"scripts": {
@@ -10,7 +10,7 @@
},
"dependencies": {
"@iconify/react": "^6.0.2",
"@issue/shared": "workspace:*",
"@sprint/shared": "workspace:*",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.8",

View File

@@ -1,7 +1,7 @@
[package]
name = "issue"
name = "sprint"
version = "0.1.0"
description = "Issue Project Manager"
description = "Sprint"
authors = ["Oliver Bryan"]
edition = "2021"
@@ -11,7 +11,7 @@ edition = "2021"
# The `_lib` suffix may seem redundant but it is necessary
# to make the lib name unique and wouldn't conflict with the bin name.
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
name = "issue_lib"
name = "sprint_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]

View File

@@ -1,8 +1,8 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "issue",
"productName": "sprint",
"version": "0.1.0",
"identifier": "com.hex248.issue",
"identifier": "com.hex248.sprint",
"build": {
"beforeDevCommand": "bun run dev",
"devUrl": "http://localhost:1420/app",
@@ -12,7 +12,7 @@
"app": {
"windows": [
{
"title": "Issue Project Manager",
"title": "Sprint",
"width": 1600,
"height": 900,
"minWidth": 640,

View File

@@ -1,4 +1,4 @@
import type { UserRecord } from "@issue/shared";
import type { UserRecord } from "@sprint/shared";
import { type FormEvent, useState } from "react";
import { toast } from "sonner";
import { Button } from "@/components/ui/button";

View File

@@ -3,7 +3,7 @@ import {
ISSUE_TITLE_MAX_LENGTH,
type SprintRecord,
type UserRecord,
} from "@issue/shared";
} from "@sprint/shared";
import { type FormEvent, useState } from "react";
import { toast } from "sonner";

View File

@@ -3,7 +3,7 @@ import {
ORG_NAME_MAX_LENGTH,
ORG_SLUG_MAX_LENGTH,
type OrganisationRecord,
} from "@issue/shared";
} from "@sprint/shared";
import { type FormEvent, useState } from "react";
import { useAuthenticatedSession } from "@/components/session-provider";
import { Button } from "@/components/ui/button";

View File

@@ -1,4 +1,4 @@
import { PROJECT_NAME_MAX_LENGTH, type ProjectRecord } from "@issue/shared";
import { PROJECT_NAME_MAX_LENGTH, type ProjectRecord } from "@sprint/shared";
import { type FormEvent, useState } from "react";
import { toast } from "sonner";
import { useAuthenticatedSession } from "@/components/session-provider";

View File

@@ -1,4 +1,4 @@
import { DEFAULT_SPRINT_COLOUR, type SprintRecord } from "@issue/shared";
import { DEFAULT_SPRINT_COLOUR, type SprintRecord } from "@sprint/shared";
import { type FormEvent, useMemo, useState } from "react";
import { toast } from "sonner";
import { useAuthenticatedSession } from "@/components/session-provider";

View File

@@ -1,4 +1,4 @@
import type { IssueResponse, ProjectResponse, SprintRecord, UserRecord } from "@issue/shared";
import type { IssueResponse, ProjectResponse, SprintRecord, UserRecord } from "@sprint/shared";
import { Check, Link, Trash, X } from "lucide-react";
import { useEffect, useRef, useState } from "react";
import { toast } from "sonner";

View File

@@ -1,4 +1,4 @@
import type { TimerState } from "@issue/shared";
import type { TimerState } from "@sprint/shared";
import { useEffect, useState } from "react";
import { Button } from "@/components/ui/button";
import { parseError, timer } from "@/lib/server";

View File

@@ -1,4 +1,4 @@
import type { IssueResponse } from "@issue/shared";
import type { IssueResponse } from "@sprint/shared";
import Avatar from "@/components/avatar";
import StatusTag from "@/components/status-tag";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";

View File

@@ -1,6 +1,6 @@
/** biome-ignore-all lint/correctness/useExhaustiveDependencies: <> */
import { USER_NAME_MAX_LENGTH, USER_USERNAME_MAX_LENGTH } from "@issue/shared";
import { USER_NAME_MAX_LENGTH, USER_USERNAME_MAX_LENGTH } from "@sprint/shared";
import { AlertTriangle, X } from "lucide-react";
import { useEffect, useState } from "react";
import { useNavigate, useSearchParams } from "react-router-dom";

View File

@@ -1,4 +1,4 @@
import type { OrganisationRecord, OrganisationResponse } from "@issue/shared";
import type { OrganisationRecord, OrganisationResponse } from "@sprint/shared";
import { useState } from "react";
import { toast } from "sonner";
import { CreateOrganisation } from "@/components/create-organisation";

View File

@@ -6,7 +6,7 @@ import {
type ProjectRecord,
type ProjectResponse,
type SprintRecord,
} from "@issue/shared";
} from "@sprint/shared";
import { ChevronDown, ChevronUp, EllipsisVertical, Plus, X } from "lucide-react";
import { type ReactNode, useCallback, useEffect, useState } from "react";
import { toast } from "sonner";

View File

@@ -1,4 +1,4 @@
import type { ProjectRecord, ProjectResponse } from "@issue/shared";
import type { ProjectRecord, ProjectResponse } from "@sprint/shared";
import { useState } from "react";
import { CreateProject } from "@/components/create-project";
import { Button } from "@/components/ui/button";

View File

@@ -1,4 +1,4 @@
import type { UserRecord } from "@issue/shared";
import type { UserRecord } from "@sprint/shared";
import { createContext, useCallback, useContext, useEffect, useRef, useState } from "react";
import { Navigate, useLocation } from "react-router-dom";
import Loading from "@/components/loading";

View File

@@ -1,4 +1,4 @@
import { DEFAULT_SPRINT_COLOUR, type SprintRecord } from "@issue/shared";
import { DEFAULT_SPRINT_COLOUR, type SprintRecord } from "@sprint/shared";
import { cn, DARK_TEXT_COLOUR, isLight } from "@/lib/utils";
export default function SmallSprintDisplay({

View File

@@ -1,4 +1,4 @@
import type { UserRecord } from "@issue/shared";
import type { UserRecord } from "@sprint/shared";
import Avatar from "@/components/avatar";
import { cn } from "@/lib/utils";

View File

@@ -1,4 +1,4 @@
import type { SprintRecord, UserRecord } from "@issue/shared";
import type { SprintRecord, UserRecord } from "@sprint/shared";
import { useState } from "react";
import SmallSprintDisplay from "@/components/small-sprint-display";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";

View File

@@ -1,4 +1,4 @@
import { DEFAULT_STATUS_COLOUR } from "@issue/shared";
import { DEFAULT_STATUS_COLOUR } from "@sprint/shared";
import { cn, DARK_TEXT_COLOUR, isLight } from "@/lib/utils";
export default function StatusTag({

View File

@@ -1,4 +1,4 @@
import type { TimerState } from "@issue/shared";
import type { TimerState } from "@sprint/shared";
import { useEffect, useState } from "react";
import { toast } from "sonner";
import { parseError, timer } from "@/lib/server";

View File

@@ -1,4 +1,4 @@
import type { UserRecord } from "@issue/shared";
import type { UserRecord } from "@sprint/shared";
import { useState } from "react";
import SmallUserDisplay from "@/components/small-user-display";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";

View File

@@ -1,4 +1,4 @@
import type { ApiError } from "@issue/shared";
import type { ApiError } from "@sprint/shared";
export * as issue from "@/lib/server/issue";
export * as organisation from "@/lib/server/organisation";

View File

@@ -1,4 +1,4 @@
import type { IssueCreateRequest, IssueRecord } from "@issue/shared";
import type { IssueCreateRequest, IssueRecord } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { SuccessResponse } from "@issue/shared";
import type { SuccessResponse } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { IssuesReplaceStatusRequest, ReplaceStatusResponse } from "@issue/shared";
import type { IssuesReplaceStatusRequest, ReplaceStatusResponse } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { IssueRecord } from "@issue/shared";
import type { IssueRecord } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrgAddMemberRequest, OrganisationMemberRecord } from "@issue/shared";
import type { OrgAddMemberRequest, OrganisationMemberRecord } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrganisationResponse } from "@issue/shared";
import type { OrganisationResponse } from "@sprint/shared";
import { getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrganisationRecord, OrgCreateRequest } from "@issue/shared";
import type { OrganisationRecord, OrgCreateRequest } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrganisationMemberResponse } from "@issue/shared";
import type { OrganisationMemberResponse } from "@sprint/shared";
import { getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrgRemoveMemberRequest, SuccessResponse } from "@issue/shared";
import type { OrgRemoveMemberRequest, SuccessResponse } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrganisationRecord } from "@issue/shared";
import type { OrganisationRecord } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { OrganisationMemberRecord, OrgUpdateMemberRoleRequest } from "@issue/shared";
import type { OrganisationMemberRecord, OrgUpdateMemberRoleRequest } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { ProjectCreateRequest, ProjectRecord } from "@issue/shared";
import type { ProjectCreateRequest, ProjectRecord } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { SprintRecord } from "@issue/shared";
import type { SprintRecord } from "@sprint/shared";
import { getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { SprintRecord } from "@issue/shared";
import type { SprintRecord } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { TimerEndRequest, TimerState } from "@issue/shared";
import type { TimerEndRequest, TimerState } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { TimerState } from "@issue/shared";
import type { TimerState } from "@sprint/shared";
import { getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { TimerState } from "@issue/shared";
import type { TimerState } from "@sprint/shared";
import { getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { TimerState, TimerToggleRequest } from "@issue/shared";
import type { TimerState, TimerToggleRequest } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { UserRecord } from "@issue/shared";
import type { UserRecord } from "@sprint/shared";
import { getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -1,4 +1,4 @@
import type { UserRecord, UserUpdateRequest } from "@issue/shared";
import type { UserRecord, UserUpdateRequest } from "@sprint/shared";
import { toast } from "sonner";
import { getCsrfToken, getServerURL } from "@/lib/utils";
import type { ServerQueryInput } from "..";

View File

@@ -7,7 +7,7 @@ import type {
ProjectResponse,
SprintRecord,
UserRecord,
} from "@issue/shared";
} from "@sprint/shared";
import { useEffect, useMemo, useRef, useState } from "react";
import { toast } from "sonner";
import AccountDialog from "@/components/account-dialog";

View File

@@ -10,7 +10,7 @@ export default function Landing() {
return (
<div className="min-h-screen flex flex-col">
<header className="relative flex items-center justify-center p-2 border-b">
<div className="text-3xl font-basteleur font-700">Issue</div>
<div className="text-3xl font-basteleur font-700">Sprint</div>
<nav className="absolute right-2 flex items-center gap-4">
<ThemeToggle />
{!isLoading && user ? (
@@ -38,7 +38,7 @@ export default function Landing() {
Need a snappy project management tool?
</h1>
<p className="text-[24px] font-goudy text-muted-foreground">
Build your next project with <span className="font-goudy font-700">Issue.</span>
Build your next project with <span className="font-goudy font-700">Sprint.</span>
</p>
<p className="text-[18px] font-goudy text-muted-foreground font-700">
Sick of Jira? Say hello to your new favorite project management tool.

View File

@@ -1,5 +1,5 @@
{
"name": "@issue/shared",
"name": "@sprint/shared",
"version": "0.1.0",
"type": "module",
"main": "./src/index.ts",