Mobile support to come.
Feb 7
wip - wire up our user dto creation
baepaul•11:41 PM
making signup form also work without js, minimal as is
baepaul•10:47 PM
refactoring validate user -> hasUser and wiring up signup form
baepaul•10:33 PM
updating sign up to use signin with otp instead
baepaul•5:25 PM
migration to disable creating user on auth user
baepaul•4:47 PM
Feb 6
for the subways
baepaul•11:10 PM
deleted unused import
mikkel•8:28 PM
chained user router
mikkel•8:26 PM
refactoring to head -> /user/{username} for username existence checks
baepaul•8:23 PM
a lot of footguns eh
baepaul•7:49 PM
updated public url to include www
mikkel•8:00 PM
wired up commit service in backend
mikkel•7:18 PM
added commit repo and service
mikkel•7:14 PM
created commits table
mikkel•7:05 PM
Feb 5
removed unnecessary envs
mikkel•9:55 PM
replaced create_user api with validate_name api
mikkel•9:54 PM
created temporary signup page
mikkel•8:37 PM
fixed sending request to wrong url
mikkel•7:51 PM
Feb 3
added reserved user names to avoid
mikkel•9:53 PM
implemented create user endpoint
mikkel•6:24 AM
created supabase client
mikkel•5:18 AM
updated server url in cli to gitdot.io
mikkel•4:54 AM
enabled git ops directly via gitdot.io
mikkel•4:52 AM
making commit.author work with legacy commit stats apis
baepaul•12:21 AM
updated commits api to return gitdot user info if exist
mikkel•12:01 AM
Feb 2
enabling dark mode based on system preference for blog & landing page only
baepaul•10:41 PM
sorting entries
baepaul•10:15 PM
explaining my sins
baepaul•9:33 PM
doing something risky and ill-advised :)
baepaul•9:13 PM
updated preview to only return blobs
mikkel•8:14 PM
baepaul•Feb 07, 2026 5:25:42 PM
updating sign up to use signin with otp instead
2 files changed
1"use client";23import { type AuthError, signup } from "@/actions";4import { cn, validateEmail, validateName } from "@/util";5import { useActionState, useState } from "react";67export default function SignupForm() {
1"use client";23import { signup } from "@/actions";4import { cn, validateEmail, validateName } from "@/util";5import { useActionState, useState } from "react";67export default function SignupForm() {
1"use server";23import { redirect } from "next/navigation";45import { refresh } from "next/cache";6import {7 authorizeDevice,8 createAnswer,9 createAnswerComment,
1"use server";23import { redirect } from "next/navigation";4..5import {6 authorizeDevice,7 createAnswer,8 createAnswerComment,
26 CreateRepositoryResponse,27 QuestionResponse,28 UserResponse,29 VoteResponse,30} from "./lib/dto";31import { validateEmail, validatePassword } from "./util";..21} from "@/lib/dal";22import { createSupabaseClient } from "@/lib/supabase";23import type {24 AnswerResponse,
26 CreateRepositoryResponse,27 QuestionResponse,28 UserResponse,29 VoteResponse,30} from "./lib/dto";..22import { refresh } from "next/cache";23import type {24 AnswerResponse,25 CommentResponse,26 CreateRepositoryResponse,
65 if (!valid) {66 return { error: "Username taken" };67 }6869 const supabase = await createSupabaseClient();70 // const { error } = await supabase.auth.signUp({71 // email,72 // options: {73 // data: { name },74 // },75 // });7677 // if (error) {78 // return { error: error.message };79 // }80 return { success: true };81}8283export async function signout() {84 const supabase = await createSupabaseClient();
65 const valid = await validateUsername(name);66 if (!valid) {67 return { error: "Username taken" };68 }69 const { data, error } = await supabase.auth.signInWithOtp({70 email,71 options: { shouldCreateUser: true },72 });73............74 return error ? { error: error.message } : { success: true };75}7677export async function signout() {78 const supabase = await createSupabaseClient();