This document outlines exciting places to integrate Friendli.ai to create a truly impressive AI-powered project manager that will wow the judges!
Demo Impact: VERY HIGH - Shows AI understanding complex project requirements
Where: Project creation or "Generate Tasks" button on project page How: Stream AI-generated tasks in real-time as they're being created
// Add to ProjectsController
func (c *ProjectsController) handleGenerateTasks(w http.ResponseWriter, r *http.Request) {
projectID := r.FormValue("project_id")
project, _ := models.GetProjectByID(projectID)
client, _ := friendli.NewClient(os.Getenv("FRIENDLI_API_KEY"))
prompt := fmt.Sprintf(`You are a project manager. Break down this project into 5-8 specific, actionable tasks.
Project: %s
Description: %s
For each task, provide:
1. Title (brief, actionable)
2. Description (1-2 sentences)
3. Priority (low/medium/high)
Format each task as:
TASK: [title]
DESC: [description]
PRIORITY: [priority]
---`, project.Name, project.Description)
req := friendli.NewChatCompletionRequest(
"meta-llama-3.1-70b-instruct",
[]friendli.Message{
friendli.NewSystemMessage("You are a helpful project management assistant."),
friendli.NewUserMessage(prompt),
},
).WithTemperature(0.7).WithMaxTokens(1000)
stream, _ := client.Chat.CreateCompletionStream(r.Context(), req)
defer stream.Close()
// Stream to HTMX as server-sent events
w.Header().Set("Content-Type", "text/event-stream")
flusher, _ := w.(http.Flusher)
for {
chunk, err := stream.Recv()
if err == io.EOF { break }
if err != nil { return }
if len(chunk.Choices) > 0 {
content := chunk.Choices[0].Delta.Content
fmt.Fprintf(w, "data: %s\n\n", content)
flusher.Flush()
}
}
}
UI Component:
<button class="btn btn-primary"
hx-post="/ai/generate-tasks"
hx-target="#ai-suggestions"
hx-swap="innerHTML">
✨ AI: Generate Tasks
</button>
<div id="ai-suggestions" class="mt-4"></div>
Judge Appeal: Real-time streaming shows AI "thinking", very visual and impressive
Demo Impact: HIGH - Practical feature developers actually need
Where: Task detail modal - "Get AI Help" button How: AI suggests implementation steps and provides code examples
func (c *ProjectsController) handleTaskBreakdown(w http.ResponseWriter, r *http.Request) {
taskID := r.FormValue("task_id")
task, _ := models.GetTaskByID(taskID)
client, _ := friendli.NewClient(os.Getenv("FRIENDLI_API_KEY"))
prompt := fmt.Sprintf(`Break down this development task into implementation steps with code examples.
Task: %s
Description: %s
Provide:
1. Step-by-step implementation plan
2. Code snippets for key parts
3. Potential challenges and solutions
4. Estimated time
Use markdown formatting.`, task.Title, task.Description)
req := friendli.NewChatCompletionRequest(
"meta-llama-3.1-70b-instruct",
[]friendli.Message{
friendli.NewSystemMessage("You are a senior software engineer helping plan implementation."),
friendli.NewUserMessage(prompt),
},
).WithTemperature(0.5)
stream, _ := client.Chat.CreateCompletionStream(r.Context(), req)
defer stream.Close()
// Stream markdown response
w.Header().Set("Content-Type", "text/event-stream")
// ... stream to UI
}
Judge Appeal: Shows practical AI assistance for developers, code examples make it tangible
Demo Impact: VERY HIGH - Executive summary of entire project
Where: Dashboard or "AI Summary" button How: AI analyzes all tasks, identifies blockers, suggests next steps
func (c *ProjectsController) handleProjectSummary(w http.ResponseWriter, r *http.Request) {
projectID := r.PathValue("project")
project, _ := models.GetProjectByID(projectID)
tasks, _ := project.GetTasks()
// Build context from all tasks
taskSummary := ""
for _, task := range tasks {
taskSummary += fmt.Sprintf("- [%s] %s: %s\n", task.Status, task.Title, task.Description)
}
client, _ := friendli.NewClient(os.Getenv("FRIENDLI_API_KEY"))
prompt := fmt.Sprintf(`Analyze this project and provide an executive summary.
Project: %s
Description: %s
Tasks:
%s
Provide:
1. **Overall Progress** - percentage complete and health status
2. **Key Achievements** - what's been done
3. **Current Blockers** - tasks stuck in progress
4. **Recommended Next Steps** - prioritized actions
5. **Timeline Estimate** - realistic completion estimate
Keep it concise and actionable.`, project.Name, project.Description, taskSummary)
req := friendli.NewChatCompletionRequest(
"meta-llama-3.1-70b-instruct",
[]friendli.Message{
friendli.NewSystemMessage("You are an AI project manager analyzing project health."),
friendli.NewUserMessage(prompt),
},
).WithTemperature(0.3) // Lower temperature for factual analysis
stream, _ := client.Chat.CreateCompletionStream(r.Context(), req)
defer stream.Close()
// Stream to dashboard
// ... implementation
}
Judge Appeal: Shows AI can analyze complex data and provide insights, very "executive-friendly"
Demo Impact: HIGH - AI making smart decisions
Where: Project page - "AI: Reprioritize Tasks" button How: AI analyzes dependencies and suggests optimal task order
func (c *ProjectsController) handleReprioritizeTasks(w http.ResponseWriter, r *http.Request) {
// Get all tasks and ask AI to suggest priority order based on:
// - Dependencies
// - Current progress
// - Business value
// - Risk factors
// Stream back reprioritization suggestions with reasoning
}
Judge Appeal: Shows AI making strategic decisions, not just generating text
Demo Impact: MEDIUM-HIGH - Helpful for collaboration
Where: Comment section on tasks How: AI suggests helpful responses or solutions based on conversation
func (c *ProjectsController) handleSmartReply(w http.ResponseWriter, r *http.Request) {
taskID := r.FormValue("task_id")
task, _ := models.GetTaskByID(taskID)
comments, _ := task.GetComments()
// Build conversation context
conversation := ""
for _, comment := range comments {
conversation += fmt.Sprintf("%s: %s\n", comment.Author, comment.Content)
}
prompt := fmt.Sprintf(`Task: %s
Recent discussion:
%s
Suggest a helpful response that moves the task forward. Consider:
- Technical solutions
- Asking clarifying questions
- Suggesting resources
- Offering to help`, task.Title, conversation)
// Stream AI-suggested reply
}
Judge Appeal: Shows AI understanding context and participating in team conversations
Demo Impact: HIGH - Developers hate documentation!
Where: Completed tasks - "Generate Docs" button How: AI creates markdown documentation from task details
func (c *ProjectsController) handleGenerateDocs(w http.ResponseWriter, r *http.Request) {
projectID := r.PathValue("project")
project, _ := models.GetProjectByID(projectID)
doneTasks, _ := /* get completed tasks */
prompt := fmt.Sprintf(`Generate project documentation in markdown format.
Project: %s
Description: %s
Completed Features:
%s
Create a README.md style document with:
1. Project Overview
2. Features Implemented
3. Setup Instructions (inferred from tasks)
4. Usage Guide
5. Next Steps (from incomplete tasks)`, /* ... */)
// Stream markdown documentation
}
Judge Appeal: Practical, saves time, shows AI can write technical content
<!-- Pulsing AI indicator while streaming -->
<div class="flex items-center gap-2 text-primary">
<span class="loading loading-dots loading-sm"></span>
<span>AI is thinking...</span>
</div>
<!-- Task card that appears as AI generates it -->
<div class="card bg-base-200 shadow animate-fade-in">
<div class="card-body">
<div class="badge badge-primary">AI Generated</div>
<h4>{{ task.Title }}</h4>
<p>{{ task.Description }}</p>
</div>
</div>
<!-- Show AI's confidence in suggestions -->
<div class="flex gap-2 mt-2">
<div class="badge badge-success">High Confidence</div>
<button class="btn btn-xs">Use Suggestion</button>
<button class="btn btn-xs btn-ghost">Edit</button>
</div>
"Let me show you an AI-powered project manager that helps developers actually get things done."
"All powered by Friendli.ai's Llama 3.1 70B model - 468,000+ models available, blazing fast streaming, and it costs pennies per request."
For the hackathon, implement in this order:
export FRIENDLI_API_KEY="flp_your_key_here"
# Get free API key from https://suite.friendli.ai
# $5 in free credits = hundreds of demo runs
| Criteria | How We Address It |
|---|---|
| Innovation | AI-powered PM tool with streaming responses |
| Technical Excellence | Clean Go code, HTMX/HATEOAS, Skykit framework |
| Practical Use | Solves real developer pain points |
| GitHub Integration | Built for GitHub HackNight, developer-focused |
| Demo Quality | Real-time streaming is visually impressive |
Next Steps: Pick 2-3 features from above and implement them for maximum demo impact! 🚀
Adding demo video
Basic AI powered project manager