A Strava-inspired skills report card platform for students that runs alongside their academic transcript. Track activities, earn XP, unlock badges, and showcase your non-academic achievements.
-
ActivityFeed - Infinite-scroll timeline of logged activities
- Card format with category icons, title, date, duration, XP earned
- Photo uploads and proof links
- Kudos system for peer recognition
- Filter by category or date range
-
LogActivityModal - Floating modal for logging new activities
- 8 skill categories: Music, STEM, Tools & Trades, Volunteer Work, Youth Mission, Driver's Ed, Occupational Ed, Athletics & Fitness
- Auto-calculates XP based on category and duration
- Photo and proof link uploads
- Real-time XP estimation
-
SkillsReportCard - Visual dashboard with progress rings
- 8 progress rings showing completion toward goals
- Total XP, level, and streak counter
- Export to PDF functionality
- Beautiful animations
-
CategoryDetail - Deep-dive into each skill category
- Sub-skills tree view
- Badge gallery (earned/unlocked)
- Category leaderboard
- Personal stats tracking
-
ProfileHeader - Student profile showcase
- Avatar, name, school, graduation year
- Shareable link and QR code
- Privacy toggle (public/private)
- Level and streak display
-
KudosSystem - Social engagement features
- Like/kudos on activities with animations
- Weekly kudos leaderboard
- Real-time updates
-
GoalSetter - Custom goal tracking
- Set semester, year, or custom period goals
- Visual progress tracking
- Confetti animation on completion
- Category-specific targets
-
AdminVerificationPanel - Teacher/coach dashboard
- Approve/deny pending activities
- Award official badges
- Activity proof verification
- Admin-only access
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Routing: React Router v6
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- PDF Export: jsPDF + html2canvas
- Icons: Lucide React
- Node.js 18+ and npm
- A Supabase account (free tier works great)
- Clone the repository
- Install dependencies:
npm install- Create a
.envfile in the root directory with your Supabase credentials:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keyThe database schema is automatically created via Supabase migrations. It includes:
- User profiles with XP, levels, and streaks
- 8 pre-populated skill categories
- Activities with approval workflow
- Badge system with achievements
- Goals tracking
- Kudos (likes) system
- Sub-skills for each category
npm run devThe app will be available at http://localhost:5173
npm run build- Sign Up: Create an account with your email
- Complete Profile: Add your school and graduation year
- Log Activities: Click the + button to log new activities
- Track Progress: View your XP, level, and progress rings
- Set Goals: Create custom goals for each category
- Earn Badges: Unlock achievements as you progress
- Share: Export your Skills Report Card as a PDF
- Enable Admin Access: Have your admin flag set in the database
- Access Admin Panel: Click the shield icon in the header
- Review Activities: Approve or deny pending student activities
- Award Badges: Give official badges to deserving students
XP is calculated based on:
- Base XP: 50 XP per hour
- Category Multiplier: Each category has a different multiplier
- STEM: 1.2x
- Tools & Trades: 1.1x
- Occupational Ed: 1.1x
- Others: 1.0x or 0.8-0.9x
Level Formula: Level = (Total XP / 1000) + 1
Toggle between light and dark themes using the moon/sun icon in the header.
Each category shows:
- Percentage complete toward 50-hour goal
- Total hours logged
- Total XP earned
- Visual progress ring with category color
- Global leaderboard on dashboard
- Category-specific leaderboards
- Ranking based on total XP earned
- Public/private profile settings
- View other students' public profiles
- Kudos system for peer encouragement
src/
├── components/ # 8 core reusable components
│ ├── ActivityFeed.tsx
│ ├── AdminVerificationPanel.tsx
│ ├── CategoryDetail.tsx
│ ├── GoalSetter.tsx
│ ├── LogActivityModal.tsx
│ ├── ProfileHeader.tsx
│ └── SkillsReportCard.tsx
├── contexts/ # React contexts
│ ├── AuthContext.tsx
│ └── ThemeContext.tsx
├── lib/ # Utilities
│ └── supabase.ts
├── pages/ # Route pages
│ ├── CategoryDetailPage.tsx
│ ├── Dashboard.tsx
│ ├── Login.tsx
│ └── Signup.tsx
├── types/ # TypeScript types
│ └── index.ts
├── App.tsx # Main app with routing
└── main.tsx # Entry point
- Row Level Security (RLS) enabled on all tables
- Private activities only visible to owner
- Admin actions restricted to admin users
- Secure authentication via Supabase Auth
- Mobile app (React Native)
- Real-time notifications
- Activity comments
- Team/club features
- Integration with school systems
- AI-powered activity suggestions
- Blockchain-verified achievements
MIT
For issues and questions, please open an issue on GitHub.
Built with Bolt.new