A modern, collaborative retrospective tool for agile teams to reflect on sprints, track action items, and improve team performance in real-time.
- Real-time Collaboration: Multiple participants can join retrospective sessions simultaneously
- Structured Retrospectives: Organize feedback into "What Went Well", "What Could Improve", and "What Should We Start" columns
- Action Item Tracking: Create and track action items from retrospective discussions
- Voting System: Team members can vote on retrospective items and action items to prioritize discussions
- Session Management: Create password-protected workspaces for team retrospectives
- Modern UI: Beautiful, responsive interface built with React and Tailwind CSS
- Real-time Updates: Live updates using Supabase real-time subscriptions
- Frontend: React 18 + TypeScript + Vite
- Styling: Tailwind CSS + Radix UI Components
- Backend: Supabase (PostgreSQL + Real-time)
- State Management: Zustand + TanStack Query
- Forms: React Hook Form + Zod validation
- Routing: React Router DOM
- UI Components: Radix UI primitives with custom styling
- Node.js 18+ or Bun
- Supabase account and project
- Git
git clone <your-repository-url>
cd agile-sprint-retrospective
npm install
# or
bun install
- Create a new Supabase project at supabase.com
- Get your project URL and anon key from the Supabase dashboard
- Create a
.env.local
file in the root directory:
VITE_SUPABASE_URL=your-supabase-project-url
VITE_SUPABASE_ANON_KEY=your-supabase-anon-key
Apply the database schema using the Supabase CLI:
# Install Supabase CLI if you haven't already
npm install -g supabase
# Link to your project
supabase link --project-ref your-project-ref
# Run migrations
supabase db push
npm run dev
# or
bun run dev
The application will be available at http://localhost:8080
agile-sprint-retrospective/
├── public/ # Static assets
├── src/
│ ├── components/ # React components
│ │ ├── ui/ # Reusable UI components (Radix UI)
│ │ ├── AddRetroItemForm.tsx
│ │ ├── ActionItemCard.tsx
│ │ ├── CreateWorkspaceForm.tsx
│ │ ├── JoinWorkspaceForm.tsx
│ │ ├── RetroColumn.tsx
│ │ └── ...
│ ├── data/retro/ # Data layer for retrospectives
│ │ ├── api.ts # API functions
│ │ └── types.ts # TypeScript types
│ ├── hooks/ # Custom React hooks
│ ├── integrations/ # Third-party integrations
│ │ └── supabase/ # Supabase client and types
│ ├── lib/ # Utility functions
│ └── pages/ # Route components
│ ├── Index.tsx # Landing page
│ ├── Workspace.tsx # Workspace management
│ ├── Retro.tsx # Retrospective session
│ └── NotFound.tsx # 404 page
├── supabase/
│ └── migrations/ # Database schema migrations
├── package.json
└── vite.config.ts
- Visit the application homepage
- Click "Create Workspace"
- Enter a workspace name and password
- Share the workspace details with your team
- Get workspace credentials from your team lead
- Click "Join Workspace" on the homepage
- Enter the workspace name and password
- Enter your name to join the session
- Create a new retrospective within your workspace
- Team members add items to three columns:
- What Went Well: Positive aspects of the sprint
- What Could Improve: Areas needing improvement
- What Should We Start: New practices to adopt
- Vote on items to prioritize discussion
- Create action items for follow-up tasks
- Vote on action items to determine priority
npm run dev
- Start development servernpm run build
- Build for productionnpm run build:dev
- Build for developmentnpm run preview
- Preview production buildnpm run lint
- Run ESLint
The application uses the following main tables:
- sessions: Workspace/session information
- session_participants: Users in each session
- retros: Individual retrospective meetings
- retro_items: Feedback items categorized by column type
- action_items: Follow-up tasks from retrospectives
- Workspace passwords are currently stored as plain text (
⚠️ Note: This should be hashed in production) - Row Level Security (RLS) is enabled but currently allows public access
- Consider implementing proper authentication for production use
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the Issues page for existing problems
- Create a new issue with detailed information
- Include steps to reproduce any bugs
- Implement password hashing for security
- Add user authentication
- Export retrospective reports
- Email notifications for action items
- Sprint metrics and analytics
- Mobile app support
- Integration with Jira/Azure DevOps
Built with ❤️ for agile teams everywhere