Skip to content

feat: Add new project from template feature and UI enhancements#52

Merged
webdevcody merged 13 commits intomainfrom
new-project-from-template
Dec 13, 2025
Merged

feat: Add new project from template feature and UI enhancements#52
webdevcody merged 13 commits intomainfrom
new-project-from-template

Conversation

@webdevcody
Copy link
Copy Markdown
Collaborator

@webdevcody webdevcody commented Dec 12, 2025

#46

Summary

This PR introduces a comprehensive new project creation feature with starter templates, along with several UI enhancements and bug fixes.

Key Features

🚀 New Project from Template

  • New Project Modal: Complete redesign of the project creation flow with a modern tabbed interface
    • Blank project creation
    • Starter kit templates with visual selection
    • Custom GitHub URL support for cloning any public repository
  • Template System:
    • Pre-configured starter templates (Agentic Jumpstart, Full Stack Campus)
    • Template metadata including tech stack, features, and descriptions
    • Server-side template management API
  • Enhanced Welcome View: Improved UX with better project creation flow

🎨 UI/UX Improvements

  • CoursePromoBadge Component: Enhanced with sidebar state management
  • Sidebar Navigation: Removed "Agent Tools" section and streamlined navigation
  • Header Improvements: Moved "Report Bug / Feature Request" button to header for better accessibility
  • File Picker: Implemented web-based file picker for improved directory and file selection

🔧 Technical Improvements

  • Build Fixes: Corrected Electron build command in package.json
  • Error Handling: Added errorType to AutoModeActivity interface for enhanced error tracking
  • Electron API: Streamlined Electron API integration
  • HTTP API Client: Enhanced client with workspace and template support

🏗️ Infrastructure

  • Release Workflow: Added R2 upload script for artifact management
  • Git Ignore: Updated to exclude build artifacts and temporary files
  • Package Updates: Various dependency updates and fixes

Files Changed

  • apps/app/src/components/new-project-modal.tsx - New comprehensive project creation modal
  • apps/app/src/lib/templates.ts - Template definitions and utilities
  • apps/app/src/components/views/welcome-view.tsx - Enhanced welcome screen
  • apps/server/src/routes/templates.ts - Server-side template API
  • Multiple UI component enhancements
  • Build and deployment configuration updates

Testing

  • New project creation from blank template
  • New project creation from starter templates
  • Custom GitHub URL cloning
  • UI components render correctly
  • Build process completes successfully

Breaking Changes

None - this is a feature addition with backward compatibility maintained.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @webdevcody, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the project creation experience by introducing a versatile new project modal that supports blank projects, starter templates, and direct GitHub repository cloning. The core architectural change involves migrating backend functionalities from Electron's IPC to a dedicated HTTP/WebSocket server, allowing the application to run fully in web browsers while maintaining Electron support. This shift streamlines the codebase, improves scalability, and lays the groundwork for future cloud-based deployments. Additionally, various UI/UX improvements and robust error handling mechanisms have been integrated to provide a more polished and reliable user experience.

Highlights

  • New Project Creation Flow: Introduced a comprehensive new project modal with options for blank projects, starter kit templates (Agentic Jumpstart, Full Stack Campus), and custom GitHub URL cloning.
  • Web-First Architecture: Refactored the application to use a dedicated backend server (apps/server) for all core functionalities, enabling full web browser support and simplifying the Electron client.
  • UI/UX Enhancements: Implemented a new CoursePromoBadge component, streamlined sidebar navigation by removing the "Agent Tools" section, and moved the "Report Bug / Feature Request" button to the header.
  • Improved File Handling: Introduced a web-based file picker for directory and file selection, and enhanced image handling for feature descriptions, including serving images via the backend.
  • Robust Error Handling & Authentication: Added specific error types for agent activities, particularly for authentication failures, and refined the display of authentication statuses for Claude and Codex CLIs.
  • Infrastructure & Build Updates: Included a new R2 upload script for release artifacts, updated .gitignore to exclude build artifacts, and added lightningcss optional dependencies for cross-platform compatibility.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/release.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is an impressive pull request that introduces a major architectural refactoring to support a web-based version of the application by moving backend logic into a dedicated server. The new "create project from template" feature is a fantastic addition and is well-implemented with a clean UI. The simplification of the Electron main process and the move to an HTTP/WebSocket-based API is a great step forward for maintainability and scalability. I've identified a critical security vulnerability and a couple of areas for code improvement to enhance maintainability. Overall, excellent work on a complex and significant update.

Comment thread apps/server/src/routes/templates.ts
Comment thread .gitignore Outdated
Comment thread apps/app/src/components/views/welcome-view.tsx Outdated
- Introduced a new red theme with custom color variables for a bold aesthetic.
- Updated the theme management to include the new red theme option.
- Added a BoardBackgroundModal component for managing board background settings, including image uploads and opacity controls.
- Enhanced KanbanCard and KanbanColumn components to support new background settings such as opacity and border visibility.
- Updated API client to handle saving and deleting board backgrounds.
- Refactored theme application logic to accommodate the new preview theme functionality.
- Added a new configuration flag `IS_MARKETING` to toggle marketing mode.
- Updated the sidebar component to conditionally display the marketing URL when in marketing mode.
- Refactored event type naming for consistency in the sidebar logic.
- Cleaned up formatting in the HttpApiClient for improved readability.
- Introduced a new video demo section to showcase features with an embedded video player.
- Styled the video container for responsive design and improved aesthetics.
- Added media queries for better display on smaller screens.
- Refactored project handling in Sidebar and WelcomeView components to use a new `upsertAndSetCurrentProject` action for creating or updating projects.
- Enhanced theme preservation logic during project creation and updates by integrating theme management directly into the store action.
- Cleaned up redundant code related to project existence checks and state updates, improving maintainability and readability.
- Added a cache-busting query parameter to the background image URL to ensure the browser reloads the image when updated.
- Updated the AppState to include an optional imageVersion property for managing image updates.
- Modified the BoardBackgroundModal and BoardView components to utilize the new imageVersion for dynamic image loading.
- Introduced `addProject` and `setCurrentProject` actions to the WelcomeView component for enhanced project management capabilities.
- Updated the component's state management to support these new actions, improving user experience in project handling.
@trueheads
Copy link
Copy Markdown
Collaborator

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is an impressive pull request that introduces a comprehensive new project creation feature with starter templates, alongside numerous UI enhancements and technical improvements. The new project modal is well-designed, and the board background customization is a fantastic addition. The code is generally well-structured, with good refactoring efforts to centralize logic. I have a few suggestions to improve maintainability and efficiency, focusing on removing some code duplication, replacing an inefficient polling mechanism with a more robust event-driven approach, and fixing a minor UI icon inconsistency. Overall, this is a high-quality contribution that significantly enhances the application's functionality and user experience.

Comment on lines +58 to +78
const backgroundSettings = currentProject
? boardBackgroundByProject[currentProject.path] || {
imagePath: null,
cardOpacity: 100,
columnOpacity: 100,
columnBorderEnabled: true,
cardGlassmorphism: true,
cardBorderEnabled: true,
cardBorderOpacity: 100,
hideScrollbar: false,
}
: {
imagePath: null,
cardOpacity: 100,
columnOpacity: 100,
columnBorderEnabled: true,
cardGlassmorphism: true,
cardBorderEnabled: true,
cardBorderOpacity: 100,
hideScrollbar: false,
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The default settings object for backgroundSettings is duplicated. To improve maintainability and avoid potential inconsistencies, it's better to define this default object as a constant and reuse it.

const defaultBackgroundSettings = {
  imagePath: null,
  cardOpacity: 100,
  columnOpacity: 100,
  columnBorderEnabled: true,
  cardGlassmorphism: true,
  cardBorderEnabled: true,
  cardBorderOpacity: 100,
  hideScrollbar: false,
};

export function BoardBackgroundModal({
  open,
  onOpenChange,
}: BoardBackgroundModalProps) {
  // ... (other state)

  const backgroundSettings = (currentProject && boardBackgroundByProject[currentProject.path]) || defaultBackgroundSettings;

Comment on lines +336 to +358
useEffect(() => {
const fetchRunningAgentsCount = async () => {
try {
const api = getElectronAPI();
if (api.runningAgents) {
const result = await api.runningAgents.getAll();
if (result.success && result.runningAgents) {
setRunningAgentsCount(result.runningAgents.length);
}
}
} catch (error) {
console.error("[Sidebar] Error fetching running agents count:", error);
}
};

// Initial fetch
fetchRunningAgentsCount();

// Set up interval to refresh every 2 seconds
const interval = setInterval(fetchRunningAgentsCount, 2000);

return () => clearInterval(interval);
}, []);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This useEffect hook polls for the running agents count every 2 seconds, which is inefficient. There is another useEffect hook below (lines 360-394) that subscribes to events for real-time updates, which is a much better approach. Relying on polling can lead to unnecessary network requests and delayed UI updates.

I recommend removing this polling-based useEffect and ensuring the event-driven approach is comprehensive. If the current events don't cover all state changes (e.g., manually stopping an agent), it would be better to add more specific events to the autoMode service rather than relying on polling as a fallback.

Comment thread apps/app/src/components/layout/sidebar.tsx
- Removed duplicate entry for node_modules from the .gitignore file to streamline ignored files and improve clarity.
- Added default background settings to streamline background management across components.
- Implemented animated border styles for in-progress cards to improve visual feedback.
- Refactored BoardBackgroundModal and BoardView components to utilize the new default settings, ensuring consistent background behavior.
- Updated KanbanCard to support animated borders, enhancing the user experience during task progress.
- Improved Sidebar component by optimizing the fetching of running agents count with a more efficient use of hooks.
- Changed the default release URL from 'https://releases.automaker.dev/releases.json' to 'https://releases.automaker.app/releases.json' in both index.html and releases.html files to ensure correct resource loading.
@webdevcody webdevcody merged commit e608f46 into main Dec 13, 2025
1 check passed
@Shironex Shironex deleted the new-project-from-template branch December 13, 2025 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants