Rahul Verma
Full Stack Developer
@@ -298,12 +305,42 @@ export function MessagesPreview() {
export function QuickActions() {
const actions = [
- { icon: FolderPlus, label: "New Project", tint: "bg-info/10 text-info", to: "/projects" as const },
- { icon: Flame, label: "Create Flare", tint: "bg-warning/10 text-warning", to: "/flares" as const },
- { icon: Users2, label: "Find Builder", tint: "bg-success/10 text-success", to: "/builders" as const },
- { icon: Trophy, label: "Start Hackathon", tint: "bg-primary-soft text-primary", to: "/hackathons" as const },
- { icon: FileText, label: "AI Description", tint: "bg-destructive/10 text-destructive", to: "/dashboard" as const },
- { icon: BarChart3, label: "View Analytics", tint: "bg-info/10 text-info", to: "/analytics" as const },
+ {
+ icon: FolderPlus,
+ label: "New Project",
+ tint: "bg-info/10 text-info",
+ to: "/projects" as const,
+ },
+ {
+ icon: Flame,
+ label: "Create Flare",
+ tint: "bg-warning/10 text-warning",
+ to: "/flares" as const,
+ },
+ {
+ icon: Users2,
+ label: "Find Builder",
+ tint: "bg-success/10 text-success",
+ to: "/builders" as const,
+ },
+ {
+ icon: Trophy,
+ label: "Start Hackathon",
+ tint: "bg-primary-soft text-primary",
+ to: "/hackathons" as const,
+ },
+ {
+ icon: FileText,
+ label: "AI Description",
+ tint: "bg-destructive/10 text-destructive",
+ to: "/dashboard" as const,
+ },
+ {
+ icon: BarChart3,
+ label: "View Analytics",
+ tint: "bg-info/10 text-info",
+ to: "/analytics" as const,
+ },
];
return (
@@ -343,7 +380,9 @@ export function UpcomingDeadlines() {
{d.project} β {d.milestone}
-
+
Due in {d.dueDays} days
@@ -354,14 +393,22 @@ export function UpcomingDeadlines() {
}
export function NotificationsFeed() {
- const { data = [] } = useQuery({ queryKey: ["notifications"], queryFn: notificationsService.list });
+ const { data = [] } = useQuery({
+ queryKey: ["notifications"],
+ queryFn: notificationsService.list,
+ });
return (
{data.map((n) => (
-
-
+
{n.text}
{n.ago}
diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts
index 4dd18b3d..f469a0f0 100644
--- a/frontend/src/lib/api.ts
+++ b/frontend/src/lib/api.ts
@@ -3,12 +3,7 @@ import { toast } from "sonner";
type JsonPrimitive = string | number | boolean | null;
type JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue };
-export type ApplicationStatus =
- | "pending"
- | "reviewing"
- | "accepted"
- | "rejected"
- | "withdrawn";
+export type ApplicationStatus = "pending" | "reviewing" | "accepted" | "rejected" | "withdrawn";
export type UUID = string;
@@ -63,13 +58,11 @@ function assertJson(data: unknown): T {
return data as T;
}
-async function requestJson(
- input: {
- url: string;
- method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
- body?: TBody;
- },
-): Promise {
+async function requestJson(input: {
+ url: string;
+ method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
+ body?: TBody;
+}): Promise {
const { baseUrl } = getApiConfig();
const res = await fetch(`${baseUrl}${input.url}`, {
@@ -167,4 +160,3 @@ export function toastError(err: unknown, fallback = "Something went wrong") {
const message = err instanceof Error ? err.message : fallback;
toast.error(message);
}
-
diff --git a/frontend/src/lib/logo.ts b/frontend/src/lib/logo.ts
index b6de47d3..201bdac5 100644
--- a/frontend/src/lib/logo.ts
+++ b/frontend/src/lib/logo.ts
@@ -1,3 +1,3 @@
import logo from "@/assets/lodo-dev.jpeg";
-export const APP_LOGO = logo;
\ No newline at end of file
+export const APP_LOGO = logo;
diff --git a/frontend/src/mocks/seed.ts b/frontend/src/mocks/seed.ts
index 26882a3d..75c84b18 100644
--- a/frontend/src/mocks/seed.ts
+++ b/frontend/src/mocks/seed.ts
@@ -3,7 +3,9 @@
export type ID = string;
-export interface Skill { name: string; }
+export interface Skill {
+ name: string;
+}
export interface Builder {
id: ID;
name: string;
@@ -110,27 +112,253 @@ const AV = (seed: string) =>
`https://api.dicebear.com/9.x/notionists-neutral/svg?seed=${encodeURIComponent(seed)}&backgroundColor=b6e3f4,c0aede,d1d4f9,ffd5dc,ffdfbf`;
export const builders: Builder[] = [
- { id: "b1", name: "Priya Sharma", handle: "priya_dev", role: "Frontend Developer", avatar: AV("Priya"), country: "India", yearsExp: 3, matchScore: 92, skills: ["React", "Next.js", "TypeScript"], online: true, bio: "Loves accessible UIs and design systems." },
- { id: "b2", name: "Rahul Verma", handle: "rahul_v", role: "Full Stack Developer", avatar: AV("Rahul"), country: "India", yearsExp: 4, matchScore: 89, skills: ["Node.js", "MongoDB", "Express"], online: true, bio: "Builds end-to-end features fast." },
- { id: "b3", name: "Ankit Singh", handle: "ankit_be", role: "Backend Developer", avatar: AV("Ankit"), country: "India", yearsExp: 2, matchScore: 87, skills: ["Python", "FastAPI", "PostgreSQL"], online: false, bio: "APIs, queues and Postgres tuning." },
- { id: "b4", name: "Sneha Iyer", handle: "sneha_ux", role: "UI/UX Designer", avatar: AV("Sneha"), country: "India", yearsExp: 3, matchScore: 94, skills: ["Figma", "Adobe XD"], online: true, bio: "Product design for early-stage teams." },
- { id: "b5", name: "Vikram Mehta", handle: "vikram_fs", role: "Full Stack Dev", avatar: AV("Vikram"), country: "India", yearsExp: 4, matchScore: 93, skills: ["MERN", "Next.js"], online: false, bio: "Ships side-projects on weekends." },
- { id: "b6", name: "Aditya Rao", handle: "aditya_m", role: "Mobile Developer", avatar: AV("Aditya"), country: "India", yearsExp: 3, matchScore: 91, skills: ["Flutter", "Firebase"], online: true, bio: "Cross-platform mobile since 2021." },
- { id: "b7", name: "Sarah Chen", handle: "sarah_c", role: "ML Engineer", avatar: AV("Sarah"), country: "US", yearsExp: 5, matchScore: 88, skills: ["Python", "PyTorch", "AWS"], online: true, bio: "Recsys, embeddings, evals." },
- { id: "b8", name: "Alex Johnson", handle: "alex_j", role: "DevOps", avatar: AV("Alex"), country: "UK", yearsExp: 6, matchScore: 86, skills: ["Kubernetes", "Terraform"], online: false, bio: "Infra as code, cost optimization." },
+ {
+ id: "b1",
+ name: "Priya Sharma",
+ handle: "priya_dev",
+ role: "Frontend Developer",
+ avatar: AV("Priya"),
+ country: "India",
+ yearsExp: 3,
+ matchScore: 92,
+ skills: ["React", "Next.js", "TypeScript"],
+ online: true,
+ bio: "Loves accessible UIs and design systems.",
+ },
+ {
+ id: "b2",
+ name: "Rahul Verma",
+ handle: "rahul_v",
+ role: "Full Stack Developer",
+ avatar: AV("Rahul"),
+ country: "India",
+ yearsExp: 4,
+ matchScore: 89,
+ skills: ["Node.js", "MongoDB", "Express"],
+ online: true,
+ bio: "Builds end-to-end features fast.",
+ },
+ {
+ id: "b3",
+ name: "Ankit Singh",
+ handle: "ankit_be",
+ role: "Backend Developer",
+ avatar: AV("Ankit"),
+ country: "India",
+ yearsExp: 2,
+ matchScore: 87,
+ skills: ["Python", "FastAPI", "PostgreSQL"],
+ online: false,
+ bio: "APIs, queues and Postgres tuning.",
+ },
+ {
+ id: "b4",
+ name: "Sneha Iyer",
+ handle: "sneha_ux",
+ role: "UI/UX Designer",
+ avatar: AV("Sneha"),
+ country: "India",
+ yearsExp: 3,
+ matchScore: 94,
+ skills: ["Figma", "Adobe XD"],
+ online: true,
+ bio: "Product design for early-stage teams.",
+ },
+ {
+ id: "b5",
+ name: "Vikram Mehta",
+ handle: "vikram_fs",
+ role: "Full Stack Dev",
+ avatar: AV("Vikram"),
+ country: "India",
+ yearsExp: 4,
+ matchScore: 93,
+ skills: ["MERN", "Next.js"],
+ online: false,
+ bio: "Ships side-projects on weekends.",
+ },
+ {
+ id: "b6",
+ name: "Aditya Rao",
+ handle: "aditya_m",
+ role: "Mobile Developer",
+ avatar: AV("Aditya"),
+ country: "India",
+ yearsExp: 3,
+ matchScore: 91,
+ skills: ["Flutter", "Firebase"],
+ online: true,
+ bio: "Cross-platform mobile since 2021.",
+ },
+ {
+ id: "b7",
+ name: "Sarah Chen",
+ handle: "sarah_c",
+ role: "ML Engineer",
+ avatar: AV("Sarah"),
+ country: "US",
+ yearsExp: 5,
+ matchScore: 88,
+ skills: ["Python", "PyTorch", "AWS"],
+ online: true,
+ bio: "Recsys, embeddings, evals.",
+ },
+ {
+ id: "b8",
+ name: "Alex Johnson",
+ handle: "alex_j",
+ role: "DevOps",
+ avatar: AV("Alex"),
+ country: "UK",
+ yearsExp: 6,
+ matchScore: 86,
+ skills: ["Kubernetes", "Terraform"],
+ online: false,
+ bio: "Infra as code, cost optimization.",
+ },
];
export const projects: Project[] = [
- { id: "p1", name: "AI Chatbot", description: "Multi-agent customer support bot for SaaS.", stack: ["React", "Node.js", "MongoDB"], owner: "Nancy Patel", members: 4, stars: 24, forks: 12, progress: 75, status: "active", icon: "π€", language: "JavaScript", difficulty: "intermediate", remote: true, paid: true, openSource: false, ai: true, web: true, frontend: true, backend: true },
- { id: "p2", name: "AI SaaS Platform", description: "Full-stack platform with billing and dashboards.", stack: ["Next.js", "Python", "PostgreSQL"], owner: "Nancy Patel", members: 6, stars: 18, forks: 8, progress: 40, status: "active", icon: "β¨", language: "Python", difficulty: "advanced", remote: true, paid: true, openSource: false, ai: true, web: true, frontend: true, backend: true },
- { id: "p3", name: "DevOps Dashboard", description: "K8s deploy monitoring with drift detection.", stack: ["Docker", "Kubernetes", "AWS"], owner: "Nancy Patel", members: 3, stars: 16, forks: 6, progress: 60, status: "active", icon: "π", language: "Go", difficulty: "advanced", remote: true, paid: false, openSource: false, ai: false, web: true, backend: true },
- { id: "p4", name: "Blockchain Wallet", description: "Non-custodial multi-chain wallet.", stack: ["Solidity", "Web3", "React"], owner: "Nancy Patel", members: 5, stars: 14, forks: 7, progress: 25, status: "planning", icon: "πͺ", language: "TypeScript", difficulty: "advanced", remote: true, paid: false, openSource: true, ai: false, web: true, mobile: true, frontend: true },
- { id: "p5", name: "React Component Library", description: "Accessible component library with docs.", stack: ["TypeScript", "Tailwind", "Storybook"], owner: "Nancy Patel", members: 2, stars: 12, forks: 5, progress: 90, status: "active", icon: "π§©", language: "TypeScript", difficulty: "beginner", remote: true, paid: false, openSource: true, ai: false, web: true, frontend: true },
- { id: "p6", name: "Open Source CRM", description: "Lightweight CRM with pipelines and reports.", stack: ["React", "Node.js", "MongoDB"], owner: "Community", members: 8, stars: 240, forks: 96, progress: 100, status: "shipped", icon: "π", language: "JavaScript", difficulty: "intermediate", remote: false, paid: false, openSource: true, ai: false, web: true, frontend: true, backend: true },
+ {
+ id: "p1",
+ name: "AI Chatbot",
+ description: "Multi-agent customer support bot for SaaS.",
+ stack: ["React", "Node.js", "MongoDB"],
+ owner: "Nancy Patel",
+ members: 4,
+ stars: 24,
+ forks: 12,
+ progress: 75,
+ status: "active",
+ icon: "π€",
+ language: "JavaScript",
+ difficulty: "intermediate",
+ remote: true,
+ paid: true,
+ openSource: false,
+ ai: true,
+ web: true,
+ frontend: true,
+ backend: true,
+ },
+ {
+ id: "p2",
+ name: "AI SaaS Platform",
+ description: "Full-stack platform with billing and dashboards.",
+ stack: ["Next.js", "Python", "PostgreSQL"],
+ owner: "Nancy Patel",
+ members: 6,
+ stars: 18,
+ forks: 8,
+ progress: 40,
+ status: "active",
+ icon: "β¨",
+ language: "Python",
+ difficulty: "advanced",
+ remote: true,
+ paid: true,
+ openSource: false,
+ ai: true,
+ web: true,
+ frontend: true,
+ backend: true,
+ },
+ {
+ id: "p3",
+ name: "DevOps Dashboard",
+ description: "K8s deploy monitoring with drift detection.",
+ stack: ["Docker", "Kubernetes", "AWS"],
+ owner: "Nancy Patel",
+ members: 3,
+ stars: 16,
+ forks: 6,
+ progress: 60,
+ status: "active",
+ icon: "π",
+ language: "Go",
+ difficulty: "advanced",
+ remote: true,
+ paid: false,
+ openSource: false,
+ ai: false,
+ web: true,
+ backend: true,
+ },
+ {
+ id: "p4",
+ name: "Blockchain Wallet",
+ description: "Non-custodial multi-chain wallet.",
+ stack: ["Solidity", "Web3", "React"],
+ owner: "Nancy Patel",
+ members: 5,
+ stars: 14,
+ forks: 7,
+ progress: 25,
+ status: "planning",
+ icon: "πͺ",
+ language: "TypeScript",
+ difficulty: "advanced",
+ remote: true,
+ paid: false,
+ openSource: true,
+ ai: false,
+ web: true,
+ mobile: true,
+ frontend: true,
+ },
+ {
+ id: "p5",
+ name: "React Component Library",
+ description: "Accessible component library with docs.",
+ stack: ["TypeScript", "Tailwind", "Storybook"],
+ owner: "Nancy Patel",
+ members: 2,
+ stars: 12,
+ forks: 5,
+ progress: 90,
+ status: "active",
+ icon: "π§©",
+ language: "TypeScript",
+ difficulty: "beginner",
+ remote: true,
+ paid: false,
+ openSource: true,
+ ai: false,
+ web: true,
+ frontend: true,
+ },
+ {
+ id: "p6",
+ name: "Open Source CRM",
+ description: "Lightweight CRM with pipelines and reports.",
+ stack: ["React", "Node.js", "MongoDB"],
+ owner: "Community",
+ members: 8,
+ stars: 240,
+ forks: 96,
+ progress: 100,
+ status: "shipped",
+ icon: "π",
+ language: "JavaScript",
+ difficulty: "intermediate",
+ remote: false,
+ paid: false,
+ openSource: true,
+ ai: false,
+ web: true,
+ frontend: true,
+ backend: true,
+ },
];
export const activity: Activity[] = [
- { id: "a1", kind: "join", text: "Alex joined your project", highlight: "AI Chatbot", ago: "2m ago" },
+ {
+ id: "a1",
+ kind: "join",
+ text: "Alex joined your project",
+ highlight: "AI Chatbot",
+ ago: "2m ago",
+ },
{ id: "a2", kind: "accept", text: "Sarah accepted your invitation", ago: "15m ago" },
{ id: "a3", kind: "commit", text: "Backend API development completed", ago: "1h ago" },
{ id: "a4", kind: "merge", text: "Frontend PR #24 merged", ago: "2h ago" },
@@ -147,15 +375,66 @@ export const builderRequests: BuilderRequest[] = [
];
export const inviteRequests: InviteRequest[] = [
- { id: "i1", project: "Open Source CRM", role: "Backend Developer", dueDays: 3, by: "Alex", icon: "π", color: "bg-info/10 text-info" },
- { id: "i2", project: "AI SaaS Platform", role: "ML Engineer", dueDays: 5, by: "Sarah", icon: "β¨", color: "bg-primary/10 text-primary" },
- { id: "i3", project: "DevOps Dashboard", role: "DevOps Engineer", dueDays: 7, by: "Mike", icon: "π", color: "bg-warning/10 text-warning" },
+ {
+ id: "i1",
+ project: "Open Source CRM",
+ role: "Backend Developer",
+ dueDays: 3,
+ by: "Alex",
+ icon: "π",
+ color: "bg-info/10 text-info",
+ },
+ {
+ id: "i2",
+ project: "AI SaaS Platform",
+ role: "ML Engineer",
+ dueDays: 5,
+ by: "Sarah",
+ icon: "β¨",
+ color: "bg-primary/10 text-primary",
+ },
+ {
+ id: "i3",
+ project: "DevOps Dashboard",
+ role: "DevOps Engineer",
+ dueDays: 7,
+ by: "Mike",
+ icon: "π",
+ color: "bg-warning/10 text-warning",
+ },
];
export const flares: Flare[] = [
- { id: "f1", author: builders[3], content: "Just shipped a component library refresh β new tokens, better a11y, half the CSS. AMA about migrating design systems.", tags: ["designsystems", "react"], likes: 128, comments: 22, ago: "1h ago" },
- { id: "f2", author: builders[6], content: "Wrote a small evaluator for embedding models. Cosine wasn't cutting it for our recall β dot-product + normalized inputs won.", tags: ["ml", "search"], likes: 87, comments: 14, ago: "3h ago" },
- { id: "f3", author: builders[1], content: "Anyone else notice Node 22 shaving ~10% off cold starts for our fastify APIs? Ran the same suite twice.", tags: ["node", "perf"], likes: 54, comments: 9, ago: "5h ago" },
+ {
+ id: "f1",
+ author: builders[3],
+ content:
+ "Just shipped a component library refresh β new tokens, better a11y, half the CSS. AMA about migrating design systems.",
+ tags: ["designsystems", "react"],
+ likes: 128,
+ comments: 22,
+ ago: "1h ago",
+ },
+ {
+ id: "f2",
+ author: builders[6],
+ content:
+ "Wrote a small evaluator for embedding models. Cosine wasn't cutting it for our recall β dot-product + normalized inputs won.",
+ tags: ["ml", "search"],
+ likes: 87,
+ comments: 14,
+ ago: "3h ago",
+ },
+ {
+ id: "f3",
+ author: builders[1],
+ content:
+ "Anyone else notice Node 22 shaving ~10% off cold starts for our fastify APIs? Ran the same suite twice.",
+ tags: ["node", "perf"],
+ likes: 54,
+ comments: 9,
+ ago: "5h ago",
+ },
];
export const conversations: Conversation[] = [
@@ -178,19 +457,61 @@ export const notifications: Notification[] = [
{ id: "n2", kind: "comment", text: "Sarah commented on your post", ago: "15m ago", unread: true },
{ id: "n3", kind: "invite", text: "Your invitation was accepted", ago: "1h ago", unread: false },
{ id: "n4", kind: "match", text: "New builder matches found", ago: "3h ago", unread: false },
- { id: "n5", kind: "hackathon", text: "Hackathon deadline reminder", ago: "1d ago", unread: false },
+ {
+ id: "n5",
+ kind: "hackathon",
+ text: "Hackathon deadline reminder",
+ ago: "1d ago",
+ unread: false,
+ },
];
export const hackathons: Hackathon[] = [
- { id: "h1", name: "AI for Good 2025", theme: "Social impact", startsIn: 12, prize: "$25k", teamSize: "2β5", registered: true },
- { id: "h2", name: "DevLink Winter Jam", theme: "Any theme", startsIn: 30, prize: "$10k", teamSize: "1β4", registered: false },
- { id: "h3", name: "Chain Builders", theme: "Web3", startsIn: 45, prize: "$50k", teamSize: "1β5", registered: false },
+ {
+ id: "h1",
+ name: "AI for Good 2025",
+ theme: "Social impact",
+ startsIn: 12,
+ prize: "$25k",
+ teamSize: "2β5",
+ registered: true,
+ },
+ {
+ id: "h2",
+ name: "DevLink Winter Jam",
+ theme: "Any theme",
+ startsIn: 30,
+ prize: "$10k",
+ teamSize: "1β4",
+ registered: false,
+ },
+ {
+ id: "h3",
+ name: "Chain Builders",
+ theme: "Web3",
+ startsIn: 45,
+ prize: "$50k",
+ teamSize: "1β5",
+ registered: false,
+ },
];
export const deadlines: Deadline[] = [
{ id: "d1", project: "AI Chatbot", milestone: "Backend API", dueDays: 2, severity: "danger" },
- { id: "d2", project: "DevOps Dashboard", milestone: "Deployment", dueDays: 5, severity: "warning" },
- { id: "d3", project: "Hackathon 2025", milestone: "Registration", dueDays: 7, severity: "warning" },
+ {
+ id: "d2",
+ project: "DevOps Dashboard",
+ milestone: "Deployment",
+ dueDays: 5,
+ severity: "warning",
+ },
+ {
+ id: "d3",
+ project: "Hackathon 2025",
+ milestone: "Registration",
+ dueDays: 7,
+ severity: "warning",
+ },
{ id: "d4", project: "Project Milestone", milestone: "v1.0", dueDays: 10, severity: "info" },
];
diff --git a/frontend/src/routes/__root.tsx b/frontend/src/routes/__root.tsx
index 128df001..04e34c21 100644
--- a/frontend/src/routes/__root.tsx
+++ b/frontend/src/routes/__root.tsx
@@ -23,12 +23,9 @@ function NotFoundComponent() {
- The page you're looking for doesn't exist or has been moved to a new
- address.
+ The page you're looking for doesn't exist or has been moved to a new address.
diff --git a/frontend/src/routes/_app.bookmarks.tsx b/frontend/src/routes/_app.bookmarks.tsx
index d48b16fc..330866c8 100644
--- a/frontend/src/routes/_app.bookmarks.tsx
+++ b/frontend/src/routes/_app.bookmarks.tsx
@@ -21,21 +21,29 @@ function BookmarksPage() {
Everything you've saved.