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

@@ -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.