feat: remove nginx, add projects/milestones/notifications pages

- Dockerfile: replace nginx with serve for static files
- Fix auth endpoint: /auth/login → /auth/token
- Add ProjectsPage, ProjectDetailPage
- Add MilestonesPage, MilestoneDetailPage with progress bar
- Add NotificationsPage with unread count
- Sidebar: add milestones/notifications nav, live unread badge
- API: configurable VITE_API_BASE for host nginx proxy
- Types: add Milestone, MilestoneProgress, Notification, ProjectMember
This commit is contained in:
zhi
2026-03-06 13:05:19 +00:00
parent 853594f447
commit 54d4c4379a
13 changed files with 529 additions and 25 deletions

View File

@@ -6,6 +6,11 @@ import DashboardPage from '@/pages/DashboardPage'
import IssuesPage from '@/pages/IssuesPage'
import IssueDetailPage from '@/pages/IssueDetailPage'
import CreateIssuePage from '@/pages/CreateIssuePage'
import ProjectsPage from '@/pages/ProjectsPage'
import ProjectDetailPage from '@/pages/ProjectDetailPage'
import MilestonesPage from '@/pages/MilestonesPage'
import MilestoneDetailPage from '@/pages/MilestoneDetailPage'
import NotificationsPage from '@/pages/NotificationsPage'
export default function App() {
const { user, loading, login, logout } = useAuth()
@@ -30,6 +35,11 @@ export default function App() {
<Route path="/issues" element={<IssuesPage />} />
<Route path="/issues/new" element={<CreateIssuePage />} />
<Route path="/issues/:id" element={<IssueDetailPage />} />
<Route path="/projects" element={<ProjectsPage />} />
<Route path="/projects/:id" element={<ProjectDetailPage />} />
<Route path="/milestones" element={<MilestonesPage />} />
<Route path="/milestones/:id" element={<MilestoneDetailPage />} />
<Route path="/notifications" element={<NotificationsPage />} />
<Route path="*" element={<Navigate to="/" />} />
</Routes>
</main>