9}
1011export default function AchievementsScreen({ user, onNavigate, onLogout }: AchievementsScreenProps) {
12const [achievements, setAchievements] = useState<Achievement[]>([]);
13const [loading, setLoading] = useState(true);
untitled-2610TaskScreen.tsx1 match
9}
1011export default function TaskScreen({ user, onNavigate, onLogout }: TaskScreenProps) {
12const [tasks, setTasks] = useState<Task[]>([]);
13const [newTaskTitle, setNewTaskTitle] = useState("");
untitled-2610LoginScreen.tsx1 match
7}
89export default function LoginScreen({ onLogin }: LoginScreenProps) {
10const [name, setName] = useState("");
11const [username, setUsername] = useState("");
untitled-2610App.tsx1 match
8type Screen = "login" | "tasks" | "achievements";
910export default function App() {
11const [currentScreen, setCurrentScreen] = useState<Screen>("login");
12const [user, setUser] = useState<User | null>(null);
untitled-2610queries.ts8 matches
34// User operations
5export async function createUser(name: string, username: string): Promise<User> {
6const result = await sqlite.execute(
7"INSERT INTO users (name, username) VALUES (?, ?) RETURNING *",
11}
1213export async function getUserByUsername(username: string): Promise<User | null> {
14const result = await sqlite.execute(
15"SELECT * FROM users WHERE username = ?",
19}
2021export async function getUserById(id: number): Promise<User | null> {
22const result = await sqlite.execute(
23"SELECT * FROM users WHERE id = ?",
2829// Task operations
30export async function createTask(userId: number, title: string, description?: string): Promise<Task> {
31const result = await sqlite.execute(
32"INSERT INTO tasks (user_id, title, description) VALUES (?, ?, ?) RETURNING *",
36}
3738export async function getUserTasks(userId: number): Promise<Task[]> {
39const result = await sqlite.execute(
40"SELECT * FROM tasks WHERE user_id = ? ORDER BY created_at DESC",
44}
4546export async function updateTaskCompletion(taskId: number, completed: boolean): Promise<Task> {
47const completedAt = completed ? new Date().toISOString() : null;
48const result = await sqlite.execute(
53}
5455export async function deleteTask(taskId: number, userId: number): Promise<boolean> {
56const result = await sqlite.execute(
57"DELETE FROM tasks WHERE id = ? AND user_id = ?",
6263// Achievement operations
64export async function getUserAchievements(userId: number): Promise<Achievement[]> {
65const result = await sqlite.execute(`
66SELECT
untitled-2610migrations.ts1 match
1import { sqlite } from "https://esm.town/v/stevekrouse/sqlite";
23export async function runMigrations() {
4// Users table
5await sqlite.execute(`
linkInBioTemplatemain.tsx1 match
2import { renderToString } from "npm:react-dom/server";
34export default async function(req: Request) {
5return new Response(
6renderToString(
untitled-6845main.tsx1 match
1export default async function (req: Request): Promise<Response> {
2return Response.json({ ok: true })
3}
untitled-5481ChatRoom.tsx1 match
3import type { ChatMessage, CreateMessageRequest, ApiResponse } from '../../shared/types.ts';
45export default function ChatRoom() {
6const [messages, setMessages] = useState<ChatMessage[]>([]);
7const [loading, setLoading] = useState(true);
untitled-5481JobForm.tsx1 match
7}
89export default function JobForm({ onJobCreated }: JobFormProps) {
10const [formData, setFormData] = useState<CreateJobRequest>({
11title: '',