Inspiration
I frequently use open source and publicly available libraries and packages when building. In the era of AI, I feel like commits, updates, and releases are a daily occurrence, and I wanted a better way to track these changes.
What it does
Briefly is an AI-powered daily standup for the code you watch. It's a digital butler that automatically generates personalized morning briefings about GitHub repository activity. Instead of manually checking commits or drowning in notifications, developers can wake up to plain-English summaries of what changed in the repositories they care about.
How we built it
I just started developing software about 2 years ago, so I'm an AI-first developer. Claude Code is my copilot (or maybe just pilot, depending on the day!).
In terms of tech stack, Briefly is built entirely on Serverpod 3.2 to showcase the framework's newest and most powerful features:
Backend: We architected a full Serverpod application with PostgreSQL, implementing custom endpoints for dossier generation, repository management, and user preferences. The backend integrates with the GitHub API to fetch commits and uses Google's Gemini AI (via dartantic_ai) to generate intelligent summaries.
Frontend: A Flutter mobile and web app using Material Design 3 with a custom retro "neon terminal" theme. The UI features smooth animations, swipe-to-dismiss gestures, pull-to-refresh, and real-time theme switching.
Key Serverpod 3.2 Features Showcased:
- Polymorphism (v3.0): We used sealed classes to implement
BriefingItemwith concrete types likeRepoUpdateItem, all stored in a single table relationship with pattern matching in Flutter - FutureCalls (v3.2): Implemented scheduled daily briefings using
DailyBriefingCallwith user-specific timing, automatic retries, and rescheduling - Multi-server architecture: Configured separate API, Insights, and Web servers with CORS
- Web Routes: Built custom
WidgetRouteimplementations for public sharing pages with server-side rendering - Authentication: Full email/password auth using Serverpod's IDP system with JWT tokens and email verification
- Type-safe database queries: Leveraged Serverpod's query builder with foreign keys, indexes, and constraints
AI Integration: The "magic" happens when commits are passed to Gemini AI with a structured prompt requesting headlines, summaries, and key changes. We implemented smart noise filtering to exclude dependabot updates, merges, and version bumps.
Challenges we ran into
I ran into countless issues with mismatches between my development and production settings. Keeping the settings correct based on flutter testing device (simulator vs physical device vs web) and development vs production API's frequently sent me for a loop.
I also started out with a very different idea for what the app would do, so frequently ran into issues due to not properly eliminating old features.
The design was also much more difficult than I anticipated, as my first two or three versions worked in my head but clearly weren't ideal after I built them. This led to a lot of iteration between front end and back end work.
Accomplishments that we're proud of
This is my first hackathon submission, so I'm really proud of that!
What we learned
More than I can list here! But to name a few really important ones:
Set VS Code launch configs for various testing scenarios.
Decide on a single auth service and stick with it.
Spend more time planning.
What's next for Briefly
I would love to enable users to customize the way briefings are written, for users to be able to set custom date and time ranges for a given briefing, to enable multi-language support, and to spend a lot more time refining the UI.
Log in or sign up for Devpost to join the conversation.