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
mck782•Feb 06, 2026 7:18:37 PM
wired up commit service in backend
1 files changed
4use sqlx::PgPool;56use gitdot_core::client::{Git2Client, GitHttpClientImpl};7use gitdot_core::repository::{8 OAuthRepositoryImpl, OrganizationRepositoryImpl, QuestionRepositoryImpl,9 RepositoryRepositoryImpl, UserRepositoryImpl,10};11use gitdot_core::service::{12 AuthorizationService, AuthorizationServiceImpl, GitHttpService, GitHttpServiceImpl,13 OAuthService, OAuthServiceImpl, OrganizationService, OrganizationServiceImpl, QuestionService,14 QuestionServiceImpl, RepositoryService, RepositoryServiceImpl, UserService, UserServiceImpl,15};16
4use sqlx::PgPool;56use gitdot_core::client::{Git2Client, GitHttpClientImpl};7use gitdot_core::repository::{8 CommitRepositoryImpl, OAuthRepositoryImpl, OrganizationRepositoryImpl, QuestionRepositoryImpl,9 RepositoryRepositoryImpl, UserRepositoryImpl,10};11use gitdot_core::service::{12 AuthorizationService, AuthorizationServiceImpl, CommitService, CommitServiceImpl,13 GitHttpService, GitHttpServiceImpl, OAuthService, OAuthServiceImpl, OrganizationService,14 OrganizationServiceImpl, QuestionService, QuestionServiceImpl, RepositoryService,15 RepositoryServiceImpl, UserService, UserServiceImpl,16};
23 pub user_service: Arc<dyn UserService>,24 pub org_service: Arc<dyn OrganizationService>,25 pub repo_service: Arc<dyn RepositoryService>,26 pub question_service: Arc<dyn QuestionService>,27 pub git_http_service: Arc<dyn GitHttpService>,..28 pub oauth_service: Arc<dyn OAuthService>,29}3031impl AppState {
23 pub auth_service: Arc<dyn AuthorizationService>,24 pub user_service: Arc<dyn UserService>,25 pub org_service: Arc<dyn OrganizationService>,26 pub repo_service: Arc<dyn RepositoryService>,27 pub question_service: Arc<dyn QuestionService>,28 pub commit_service: Arc<dyn CommitService>,29 pub git_http_service: Arc<dyn GitHttpService>,30 pub oauth_service: Arc<dyn OAuthService>,31}32
37 let repo_repo = RepositoryRepositoryImpl::new(pool.clone());38 let user_repo = UserRepositoryImpl::new(pool.clone());39 let question_repo = QuestionRepositoryImpl::new(pool.clone());40 let oauth_repo = OAuthRepositoryImpl::new(pool.clone());41..42 let auth_service = Arc::new(AuthorizationServiceImpl::new(43 org_repo.clone(),44 repo_repo.clone(),45 question_repo.clone(),
3738 let org_repo = OrganizationRepositoryImpl::new(pool.clone());39 let repo_repo = RepositoryRepositoryImpl::new(pool.clone());40 let user_repo = UserRepositoryImpl::new(pool.clone());41 let question_repo = QuestionRepositoryImpl::new(pool.clone());42 let commit_repo = CommitRepositoryImpl::new(pool.clone());43 let oauth_repo = OAuthRepositoryImpl::new(pool.clone());4445 let auth_service = Arc::new(AuthorizationServiceImpl::new(46 org_repo.clone(),
62 repo_repo.clone(),63 ));64 let git_http_service = Arc::new(GitHttpServiceImpl::new(git_http_client.clone()));65 let oauth_service = Arc::new(OAuthServiceImpl::new(oauth_repo.clone(), user_repo.clone()));66..67 Self {68 settings,69 auth_service,70 user_service,
62 ));63 let question_service = Arc::new(QuestionServiceImpl::new(64 question_repo.clone(),65 repo_repo.clone(),66 ));67 let commit_service = Arc::new(CommitServiceImpl::new(commit_repo.clone()));68 let git_http_service = Arc::new(GitHttpServiceImpl::new(git_http_client.clone()));69 let oauth_service = Arc::new(OAuthServiceImpl::new(oauth_repo.clone(), user_repo.clone()));7071 Self {
73 question_service,74 git_http_service,75 oauth_service,76 }77 }..78}79
73 auth_service,74 user_service,75 org_service,76 repo_service,77 question_service,78 commit_service,79 git_http_service,80 oauth_service,