From 04017f81288042e0064a0db88240450ba883a752 Mon Sep 17 00:00:00 2001 From: sbafsk Date: Sat, 24 Jan 2026 14:06:00 -0300 Subject: [PATCH 1/2] Update seeds with real portfolio data, keep example for reference --- db/seeds.rb | 790 ++++++++++++++++++++++++++++++++++---------- db/seeds_example.rb | 201 +++++++++++ 2 files changed, 825 insertions(+), 166 deletions(-) create mode 100644 db/seeds_example.rb diff --git a/db/seeds.rb b/db/seeds.rb index 5caf729..3e23a1c 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,201 +1,659 @@ +# Real Project Data Seed File +# This file contains actual project data from your portfolio +# Fields marked with # FUTURE: are not in current schema but can be added later + # Clear existing data puts "Clearing existing data..." Task.destroy_all Project.destroy_all -# Project data -projects_data = [ +puts "Creating real projects from portfolio..." + +# ============================================================================= +# 🟒 PRODUCTION & LIVE PROJECTS +# ============================================================================= + +# 1. maicemita-site - E-commerce Alfajores Site +maicemita = Project.create!( + name: "maicemita-site", + description: "E-commerce site for homemade alfajores de maicena. Built with Next.js 15, TypeScript, TailwindCSS. LIVE & DEPLOYED on Vercel." + # FUTURE: tech_stack: "Next.js 15, TypeScript, TailwindCSS, Vercel" + # FUTURE: phase: "Refactoring & Optimization" + # FUTURE: completion_percentage: 95 + # FUTURE: status: "live" + # FUTURE: live_url: "https://maicemita-site-p8nj28zae-sbafsks-projects.vercel.app" + # FUTURE: last_updated: "2024-09-15" +) + +Task.create!([ { - name: "Website Redesign", - description: "Redesign the company website with modern UI/UX and improved accessibility" + project: maicemita, + title: "Payment Integration", + description: "Integrate Stripe/PayPal for online payment processing", + status: "todo", + priority: 1, + due_date: 30.days.from_now }, { - name: "Mobile App Development", - description: "Build a cross-platform mobile app for iOS and Android using React Native" + project: maicemita, + title: "Order Management System", + description: "Build admin dashboard for managing customer orders", + status: "todo", + priority: 2, + due_date: 45.days.from_now }, { - name: "Marketing Campaign Q1", - description: "Launch comprehensive marketing campaign for Q1 2025" + project: maicemita, + title: "Customer Reviews Feature", + description: "Add customer reviews and ratings for products", + status: "todo", + priority: 3, + due_date: 60.days.from_now }, { - name: "API Modernization", - description: "Migrate legacy REST API to GraphQL and improve performance" + project: maicemita, + title: "SEO Optimization", + description: "Optimize for local search and improve Google rankings", + status: "in_progress", + priority: 2, + due_date: 15.days.from_now + } +]) + +# 2. personal-site - Professional Portfolio +personal_site = Project.create!( + name: "personal-site", + description: "Professional portfolio and personal branding site. Showcases skills, experience, and projects. Built with Next.js 15, TypeScript, shadcn/ui." + # FUTURE: tech_stack: "Next.js 15, TypeScript, shadcn/ui, TailwindCSS" + # FUTURE: phase: "Enhanced Features & Polish" + # FUTURE: completion_percentage: 98 + # FUTURE: status: "live" + # FUTURE: live_url: "https://personal-site-lpwaqlv2j-sbafsks-projects.vercel.app" + # FUTURE: last_updated: "2025-09-29" +) + +Task.create!([ + { + project: personal_site, + title: "Anti-Spam Protection", + description: "Implement rate limiting + CAPTCHA for contact form", + status: "in_progress", + priority: 1, + due_date: 7.days.from_now }, { - name: "Customer Portal", - description: "Build self-service customer portal with account management features" + project: personal_site, + title: "Performance Monitoring", + description: "Set up Core Web Vitals tracking and optimization", + status: "in_progress", + priority: 2, + due_date: 10.days.from_now }, { - name: "Data Analytics Dashboard", - description: "Create real-time analytics dashboard for business metrics" + project: personal_site, + title: "Vercel CI/CD Deployment", + description: "Configure preview deployments and automated CI/CD pipeline", + status: "todo", + priority: 2, + due_date: 17.days.from_now + } +]) + +# ============================================================================= +# 🟑 ACTIVE DEVELOPMENT PROJECTS +# ============================================================================= + +# 3. task-tracker - Project Management Rails App +task_tracker = Project.create!( + name: "task-tracker", + description: "Lightweight Rails task tracker for managing projects and tasks. Features: CRUD, filtering, sorting, JSON API, bulk operations with Solid Queue. 100% COMPLETE!" + # FUTURE: tech_stack: "Rails 8.0, PostgreSQL, TailwindCSS, Solid Queue" + # FUTURE: phase: "Complete - Testing & Polish" + # FUTURE: completion_percentage: 100 + # FUTURE: status: "complete" + # FUTURE: last_updated: "2025-12-04" +) + +Task.create!([ + { + project: task_tracker, + title: "All Assignment Requirements Met", + description: "Project and Task models, CRUD, filtering, sorting, API, tests all complete", + status: "done", + priority: 1, + due_date: 4.days.ago }, { - name: "Infrastructure Upgrade", - description: "Upgrade cloud infrastructure and implement auto-scaling" + project: task_tracker, + title: "Deploy Real Project Data", + description: "Import all real portfolio projects and tasks into the system", + status: "in_progress", + priority: 1, + due_date: Date.today + } +]) + +# 4. avent-properties - Property Booking Platform +avent = Project.create!( + name: "avent-properties", + description: "Property booking platform with tour reservations. Features: Apollo Server + Supabase, SOLID principles, validation builder pattern, repository pattern. Tour system 100% complete." + # FUTURE: tech_stack: "Next.js 15, TypeScript, Apollo + Supabase, PostgreSQL" + # FUTURE: phase: "Tour Reservation System Complete" + # FUTURE: completion_percentage: 100 (for current phase) + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-01-15" +) + +Task.create!([ + { + project: avent, + title: "Stripe Payment Integration", + description: "Integrate Stripe for secure payment processing of tour deposits and full payments", + status: "todo", + priority: 1, + due_date: 30.days.from_now }, { - name: "Security Audit", - description: "Conduct comprehensive security audit and implement fixes" + project: avent, + title: "Email Notification System", + description: "Implement automated email notifications for bookings and confirmations", + status: "todo", + priority: 1, + due_date: 20.days.from_now }, { - name: "Documentation Overhaul", - description: "Rewrite technical documentation and create video tutorials" + project: avent, + title: "Calendar Management", + description: "Add calendar view and availability checking for tours", + status: "todo", + priority: 2, + due_date: 45.days.from_now }, { - name: "Employee Onboarding System", - description: "Build automated onboarding system for new hires" + project: avent, + title: "Agent Dashboard Enhancement", + description: "Enhance agent dashboard with real-time updates and analytics", + status: "in_progress", + priority: 2, + due_date: 40.days.from_now } -] - -# Task templates with variety of titles and descriptions -task_templates = [ - # Design tasks - { title: "Create wireframes", description: "Design low-fidelity wireframes for user flow", category: :design }, - { title: "Design mockups", description: "Create high-fidelity mockups in Figma", category: :design }, - { title: "Build design system", description: "Establish design system with components and tokens", category: :design }, - { title: "Conduct user research", description: "Interview users and gather feedback", category: :design }, - { title: "Create prototypes", description: "Build interactive prototypes for testing", category: :design }, - - # Development tasks - { title: "Setup project structure", description: "Initialize project with required dependencies", category: :development }, - { title: "Implement authentication", description: "Add user authentication with OAuth2", category: :development }, - { title: "Build REST API endpoints", description: "Create RESTful API endpoints for core features", category: :development }, - { title: "Add database migrations", description: "Create and run database schema migrations", category: :development }, - { title: "Implement search functionality", description: "Add full-text search with Elasticsearch", category: :development }, - { title: "Write unit tests", description: "Add comprehensive unit test coverage", category: :development }, - { title: "Setup CI/CD pipeline", description: "Configure automated testing and deployment", category: :development }, - { title: "Optimize database queries", description: "Refactor slow queries and add indexes", category: :development }, - { title: "Add caching layer", description: "Implement Redis caching for performance", category: :development }, - { title: "Build admin dashboard", description: "Create admin interface for management", category: :development }, - - # Testing tasks - { title: "Write integration tests", description: "Add end-to-end integration test suite", category: :testing }, - { title: "Perform load testing", description: "Test application under high load conditions", category: :testing }, - { title: "Conduct security testing", description: "Run penetration tests and security scans", category: :testing }, - { title: "UAT with stakeholders", description: "User acceptance testing with business team", category: :testing }, - - # DevOps tasks - { title: "Setup monitoring", description: "Configure APM and error tracking", category: :devops }, - { title: "Implement logging", description: "Add structured logging with ELK stack", category: :devops }, - { title: "Configure backups", description: "Setup automated database backups", category: :devops }, - { title: "Setup staging environment", description: "Create staging environment matching production", category: :devops }, - { title: "Implement auto-scaling", description: "Configure horizontal pod autoscaling", category: :devops }, - - # Documentation tasks - { title: "Write API documentation", description: "Document all API endpoints with examples", category: :documentation }, - { title: "Create user guides", description: "Write comprehensive user documentation", category: :documentation }, - { title: "Record demo videos", description: "Create video tutorials for key features", category: :documentation }, - { title: "Update README", description: "Update project README with latest information", category: :documentation }, - - # Management tasks - { title: "Sprint planning", description: "Plan upcoming sprint with team", category: :management }, - { title: "Code review", description: "Review pull requests from team members", category: :management }, - { title: "Stakeholder meeting", description: "Present progress to stakeholders", category: :management }, - { title: "Team retrospective", description: "Conduct sprint retrospective meeting", category: :management }, - - # Bug fixes - { title: "Fix login bug", description: "Resolve issue with login timeout", category: :bugfix }, - { title: "Fix payment processing", description: "Debug payment gateway integration issue", category: :bugfix }, - { title: "Fix mobile responsiveness", description: "Resolve layout issues on mobile devices", category: :bugfix }, - { title: "Fix data validation", description: "Add missing validation rules", category: :bugfix }, - { title: "Fix email notifications", description: "Debug email delivery failures", category: :bugfix } -] - -# Status distribution (realistic project distribution) -# 50% todo, 30% in_progress, 20% done -def weighted_status - rand_num = rand - if rand_num < 0.5 - "todo" - elsif rand_num < 0.8 - "in_progress" - else - "done" - end -end +]) -# Create projects -puts "Creating projects..." -projects = projects_data.map do |project_data| - Project.create!(project_data) -end +# 5. linear-clone - Project Management Tool Clone +linear_clone = Project.create!( + name: "linear-clone", + description: "Linear project management tool clone. Phoenix/Elixir backend with GraphQL API, Next.js frontend. Currently in resurrection/upgrade phase." + # FUTURE: tech_stack: "Phoenix/Elixir 1.7, LiveView, PostgreSQL, Absinthe GraphQL, Next.js" + # FUTURE: phase: "Resurrection Planning" + # FUTURE: completion_percentage: 10 + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-09-05" +) -# Create 100 tasks distributed across projects -puts "Creating tasks..." -task_count = 0 -target_tasks = 100 - -projects.each_with_index do |project, project_index| - # Distribute tasks unevenly (some projects have more tasks) - tasks_for_project = case project_index - when 0..2 then 15 # First 3 projects get 15 tasks each - when 3..5 then 10 # Next 3 projects get 10 tasks each - when 6..8 then 7 # Next 3 projects get 7 tasks each - else 4 # Last project gets 4 tasks - end +Task.create!([ + { + project: linear_clone, + title: "Upgrade Phoenix to 1.7", + description: "Upgrade Phoenix generators and endpoint following 1.7 migration guides", + status: "todo", + priority: 1, + due_date: 15.days.from_now + }, + { + project: linear_clone, + title: "Migrate Asset Pipeline", + description: "Migrate from esbuild to tailwind + assets.deploy", + status: "todo", + priority: 1, + due_date: 20.days.from_now + }, + { + project: linear_clone, + title: "Audit Dependencies", + description: "Audit Absinthe/Plug versions for Phoenix 1.7 compatibility", + status: "todo", + priority: 2, + due_date: 25.days.from_now + }, + { + project: linear_clone, + title: "Complete GraphQL Integration", + description: "Finalize backend GraphQL API integration", + status: "todo", + priority: 2, + due_date: 45.days.from_now + } +]) - tasks_for_project.times do |i| - break if task_count >= target_tasks - - # Select a random task template - template = task_templates.sample - - # Determine status based on weights - status = weighted_status - - # Priority (1-5, with bias toward 2-3) - priority = [ 1, 2, 2, 3, 3, 3, 4, 4, 5 ].sample - - # Due date logic - due_date = if rand < 0.1 # 10% have no due date - nil - elsif rand < 0.2 # 20% are overdue - rand(1..14).days.ago - elsif rand < 0.5 # 30% are due soon (next 7 days) - rand(1..7).days.from_now - else # 40% are due later - rand(8..30).days.from_now - end - - # Adjust status for completed tasks (they shouldn't be overdue) - if status == "done" && due_date && due_date < Date.today - due_date = rand(1..30).days.ago - end - - Task.create!( - project: project, - title: "#{template[:title]} - Phase #{i + 1}", - description: template[:description], - status: status, - priority: priority, - due_date: due_date - ) - - task_count += 1 - end -end +# 6. train-uy - Train Route Visualization +train_uy = Project.create!( + name: "train-uy", + description: "Train route visualization and booking platform for Uruguay. Next.js + Supabase. Currently in planning phase with database architecture work." + # FUTURE: tech_stack: "Next.js 15, TypeScript, Supabase, PostgreSQL" + # FUTURE: phase: "Planning & Architecture" + # FUTURE: completion_percentage: 5 + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-09-05" +) + +Task.create!([ + { + project: train_uy, + title: "Finalize Architecture", + description: "Finalize system architecture and MVP scope definition", + status: "in_progress", + priority: 1, + due_date: 10.days.from_now + }, + { + project: train_uy, + title: "Choose Backend Solution", + description: "Decide between Supabase vs Firebase vs custom Node.js backend", + status: "todo", + priority: 1, + due_date: 12.days.from_now + }, + { + project: train_uy, + title: "Database Schema Design", + description: "Define database schema and RBAC (Role-Based Access Control)", + status: "todo", + priority: 1, + due_date: 20.days.from_now + }, + { + project: train_uy, + title: "Integrate shadcn/ui", + description: "Set up and integrate shadcn/ui component library", + status: "todo", + priority: 2, + due_date: 25.days.from_now + }, + { + project: train_uy, + title: "Prepare MVP Screens", + description: "Design and implement MVP screens and routing structure", + status: "todo", + priority: 2, + due_date: 55.days.from_now + } +]) + +# 7. pomodoro - Flutter Pomodoro Timer +pomodoro = Project.create!( + name: "pomodoro", + description: "Flutter-based Pomodoro timer app for iOS and Android. Features: 25min focus timer, breaks, notifications, customization. MVP complete, ready for app store." + # FUTURE: tech_stack: "Flutter 3.35.3, Dart 3.9.2" + # FUTURE: phase: "MVP Complete" + # FUTURE: completion_percentage: 80 + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-01-05" +) + +Task.create!([ + { + project: pomodoro, + title: "App Store Preparation", + description: "Prepare app store listing, screenshots, and descriptions for iOS and Android", + status: "in_progress", + priority: 1, + due_date: 10.days.from_now + }, + { + project: pomodoro, + title: "Final Testing", + description: "Complete final testing on multiple devices and OS versions", + status: "in_progress", + priority: 1, + due_date: 7.days.from_now + }, + { + project: pomodoro, + title: "App Icons & Screenshots", + description: "Create professional app icons and store screenshots", + status: "todo", + priority: 2, + due_date: 5.days.from_now + }, + { + project: pomodoro, + title: "App Store Submission", + description: "Submit app to iOS App Store and Google Play Store", + status: "todo", + priority: 1, + due_date: 15.days.from_now + } +]) + +# 8. supap-front - SUPAP Frontend +supap_front = Project.create!( + name: "supap-front", + description: "SUPAP (Sociedad Uruguaya de Psicoterapias Asistidas con PsicodΓ©licos) frontend. Next.js 14 with Tailwind v4, comprehensive animation system implemented." + # FUTURE: tech_stack: "Next.js 14, Tailwind v4, shadcn/ui, Radix UI" + # FUTURE: phase: "UI/UX Enhancement + Animation System" + # FUTURE: completion_percentage: 42 + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-12-01" +) -# Summary statistics -puts "\n" + "=" * 50 -puts "Seed data created successfully!" -puts "=" * 50 -puts "Projects: #{Project.count}" -puts "Tasks: #{Task.count}" -puts "\nTask Breakdown:" -puts " Todo: #{Task.where(status: 'todo').count}" -puts " In Progress: #{Task.where(status: 'in_progress').count}" -puts " Done: #{Task.where(status: 'done').count}" -puts "\nOverdue tasks: #{Task.overdue.count}" -puts "\nPriority Distribution:" +Task.create!([ + { + project: supap_front, + title: "Brand Assets Integration", + description: "Export and integrate SUPAP brand assets (logo, colors, fonts)", + status: "in_progress", + priority: 1, + due_date: 8.days.from_now + }, + { + project: supap_front, + title: "Spanish Content Population", + description: "Populate all sections with Spanish content and translations", + status: "todo", + priority: 1, + due_date: 20.days.from_now + }, + { + project: supap_front, + title: "Accessibility Testing", + description: "Run accessibility checks and ensure WCAG compliance", + status: "todo", + priority: 2, + due_date: 25.days.from_now + }, + { + project: supap_front, + title: "Mobile Responsiveness", + description: "Test and optimize mobile responsiveness across devices", + status: "todo", + priority: 2, + due_date: 25.days.from_now + } +]) + +# 9. supap-back - SUPAP Backend API +supap_back = Project.create!( + name: "supap-back", + description: "SUPAP backend API. Spring Boot + PostgreSQL + JWT authentication. Currently in Phase 0: Documentation & Configuration Setup (90% complete)." + # FUTURE: tech_stack: "Spring Boot, PostgreSQL, JWT, Flyway, JPA" + # FUTURE: phase: "Phase 0 - Documentation & Configuration" + # FUTURE: completion_percentage: 15 + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-11-24" +) + +Task.create!([ + { + project: supap_back, + title: "Complete Standards Documentation", + description: "Finish SUPAP-specific standards and coding guidelines documentation", + status: "in_progress", + priority: 1, + due_date: 5.days.from_now + }, + { + project: supap_back, + title: "Create Java Package Structure", + description: "Set up Java package structure for uy.supap domain", + status: "todo", + priority: 1, + due_date: 10.days.from_now + }, + { + project: supap_back, + title: "Implement User & Role Entities", + description: "Create User and Role JPA entities with relationships", + status: "todo", + priority: 1, + due_date: 15.days.from_now + }, + { + project: supap_back, + title: "Configure Spring Security + JWT", + description: "Set up Spring Security with JWT token authentication", + status: "todo", + priority: 1, + due_date: 20.days.from_now + }, + { + project: supap_back, + title: "Create Flyway Migrations", + description: "Write initial Flyway migration scripts for database schema", + status: "todo", + priority: 2, + due_date: 22.days.from_now + } +]) + +# ============================================================================= +# πŸ”΅ PLANNING & EARLY STAGE PROJECTS +# ============================================================================= + +# 10. aldea-infinita - Community Platform +aldea = Project.create!( + name: "aldea-infinita", + description: "Community platform project. Next.js + Supabase (not configured yet). Early development stage focusing on project setup." + # FUTURE: tech_stack: "Next.js, Supabase (planned), TypeScript" + # FUTURE: phase: "Early Development - Project Setup" + # FUTURE: completion_percentage: 15 + # FUTURE: status: "planning" + # FUTURE: last_updated: "2025-11-03" +) + +Task.create!([ + { + project: aldea, + title: "Brand Assets Setup", + description: "Gather and integrate brand assets and design system", + status: "todo", + priority: 2, + due_date: 30.days.from_now + }, + { + project: aldea, + title: "Content Population", + description: "Create and populate Spanish content for all sections", + status: "todo", + priority: 2, + due_date: 45.days.from_now + }, + { + project: aldea, + title: "Accessibility Review", + description: "Conduct accessibility and responsiveness checks", + status: "todo", + priority: 3, + due_date: 60.days.from_now + } +]) + +# 11. creaciones-del-mago - Artist Portfolio +creaciones = Project.create!( + name: "creaciones-del-mago", + description: "Artist portfolio website. Next.js + TailwindCSS. UI enhancement and UX optimization phase (75% complete)." + # FUTURE: tech_stack: "Next.js, TailwindCSS" + # FUTURE: phase: "UI Enhancement & UX Optimization" + # FUTURE: completion_percentage: 75 + # FUTURE: status: "planning" + # FUTURE: last_updated: "2025-09-28" +) + +Task.create!([ + { + project: creaciones, + title: "Performance Optimization", + description: "Optimize images, lazy loading, and Core Web Vitals", + status: "todo", + priority: 2, + due_date: 20.days.from_now + }, + { + project: creaciones, + title: "Mobile Responsiveness Testing", + description: "Test and fix mobile layout issues across devices", + status: "todo", + priority: 2, + due_date: 25.days.from_now + }, + { + project: creaciones, + title: "Accessibility Audit", + description: "Run WCAG accessibility audit and implement fixes", + status: "todo", + priority: 3, + due_date: 35.days.from_now + } +]) + +# 12. trees-software/trees-landing - Company Landing Page +trees = Project.create!( + name: "trees-software-landing", + description: "Trees Software company landing page. Next.js 15 + TypeScript + TailwindCSS. Active development with 65% completion." + # FUTURE: tech_stack: "Next.js 15, TypeScript, TailwindCSS" + # FUTURE: phase: "Active Development" + # FUTURE: completion_percentage: 65 + # FUTURE: status: "active_development" + # FUTURE: last_updated: "2025-01-14" +) + +Task.create!([ + { + project: trees, + title: "Coding Standards Implementation", + description: "Implement and enforce coding standards across the codebase", + status: "in_progress", + priority: 2, + due_date: 8.days.from_now + }, + { + project: trees, + title: "UI Polish and Refinement", + description: "Polish UI components and refine overall user experience", + status: "todo", + priority: 2, + due_date: 15.days.from_now + }, + { + project: trees, + title: "Testing and Deployment", + description: "Set up testing infrastructure and deploy to production", + status: "todo", + priority: 1, + due_date: 25.days.from_now + } +]) + +# ============================================================================= +# πŸ”§ MAINTENANCE / BACKLOG PROJECTS +# ============================================================================= + +# 13. scrappers/ML-props - Property Scraper +scrappers = Project.create!( + name: "ML-props-scraper", + description: "Web scraper for ML properties using Playwright. Maintenance mode." + # FUTURE: tech_stack: "Playwright, Node.js" + # FUTURE: status: "maintenance" +) + +Task.create!([ + { + project: scrappers, + title: "Update Scraper Selectors", + description: "Update CSS selectors if website structure changed", + status: "todo", + priority: 4, + due_date: nil + }, + { + project: scrappers, + title: "Add Error Handling", + description: "Improve error handling and retry logic", + status: "todo", + priority: 4, + due_date: nil + } +]) + +# 14. AI Assistant Development Kit - Boilerplates Collection +aidk = Project.create!( + name: "ai-assistant-development-kit", + description: "Collection of boilerplate projects: Rails, Spring Boot, Next.js, Elixir, Flutter, Playwright scrapers. Reference architecture and starting points." + # FUTURE: tech_stack: "Multiple (Rails, Spring Boot, Next.js, Elixir, Flutter, Playwright)" + # FUTURE: status: "maintenance" +) + +Task.create!([ + { + project: aidk, + title: "Update Rails Boilerplate", + description: "Update Rails boilerplate to Rails 8.0", + status: "todo", + priority: 3, + due_date: nil + }, + { + project: aidk, + title: "Update Next.js Boilerplate", + description: "Update Next.js boilerplate to Next.js 15", + status: "todo", + priority: 3, + due_date: nil + }, + { + project: aidk, + title: "Document All Boilerplates", + description: "Create comprehensive documentation for each boilerplate", + status: "todo", + priority: 3, + due_date: nil + } +]) + +# ============================================================================= +# SUMMARY STATISTICS +# ============================================================================= + +puts "\n" + "=" * 70 +puts "πŸŽ‰ REAL PROJECT DATA IMPORTED SUCCESSFULLY!" +puts "=" * 70 +puts "πŸ“Š Statistics:" +puts " Projects: #{Project.count}" +puts " Tasks: #{Task.count}" +puts "\nπŸ“‹ Task Breakdown:" +puts " βœ… Done: #{Task.where(status: 'done').count}" +puts " πŸ”„ In Progress: #{Task.where(status: 'in_progress').count}" +puts " πŸ“ Todo: #{Task.where(status: 'todo').count}" +puts "\n⚠️ Overdue Tasks: #{Task.overdue.count}" +puts "\n🎯 Priority Distribution:" (1..5).each do |priority| count = Task.where(priority: priority).count - puts " Priority #{priority}: #{count}" + priority_label = case priority + when 1 then "πŸ”΄ Critical" + when 2 then "🟠 High" + when 3 then "🟑 Medium" + when 4 then "🟒 Low" + when 5 then "βšͺ Very Low" + end + puts " #{priority_label}: #{count}" end -# Show project task counts -puts "\nTasks per Project:" -Project.includes(:tasks).each do |project| +puts "\nπŸ“ Tasks per Project:" +Project.includes(:tasks).order(:name).each do |project| + total = project.tasks.count incomplete = project.tasks.where.not(status: 'done').count - puts " #{project.name}: #{project.tasks.count} total (#{incomplete} incomplete)" + done = project.tasks.where(status: 'done').count + in_progress = project.tasks.where(status: 'in_progress').count + + status_icon = if done == total + "βœ…" + elsif in_progress > 0 + "πŸ”„" + else + "πŸ“" + end + + puts " #{status_icon} #{project.name}: #{total} total (#{incomplete} incomplete, #{done} done)" end -puts "=" * 50 +puts "=" * 70 +puts "\nπŸ’‘ TIP: Run 'rails db:seed:replant' to reset and reload this data" +puts "=" * 70 diff --git a/db/seeds_example.rb b/db/seeds_example.rb new file mode 100644 index 0000000..5caf729 --- /dev/null +++ b/db/seeds_example.rb @@ -0,0 +1,201 @@ +# Clear existing data +puts "Clearing existing data..." +Task.destroy_all +Project.destroy_all + +# Project data +projects_data = [ + { + name: "Website Redesign", + description: "Redesign the company website with modern UI/UX and improved accessibility" + }, + { + name: "Mobile App Development", + description: "Build a cross-platform mobile app for iOS and Android using React Native" + }, + { + name: "Marketing Campaign Q1", + description: "Launch comprehensive marketing campaign for Q1 2025" + }, + { + name: "API Modernization", + description: "Migrate legacy REST API to GraphQL and improve performance" + }, + { + name: "Customer Portal", + description: "Build self-service customer portal with account management features" + }, + { + name: "Data Analytics Dashboard", + description: "Create real-time analytics dashboard for business metrics" + }, + { + name: "Infrastructure Upgrade", + description: "Upgrade cloud infrastructure and implement auto-scaling" + }, + { + name: "Security Audit", + description: "Conduct comprehensive security audit and implement fixes" + }, + { + name: "Documentation Overhaul", + description: "Rewrite technical documentation and create video tutorials" + }, + { + name: "Employee Onboarding System", + description: "Build automated onboarding system for new hires" + } +] + +# Task templates with variety of titles and descriptions +task_templates = [ + # Design tasks + { title: "Create wireframes", description: "Design low-fidelity wireframes for user flow", category: :design }, + { title: "Design mockups", description: "Create high-fidelity mockups in Figma", category: :design }, + { title: "Build design system", description: "Establish design system with components and tokens", category: :design }, + { title: "Conduct user research", description: "Interview users and gather feedback", category: :design }, + { title: "Create prototypes", description: "Build interactive prototypes for testing", category: :design }, + + # Development tasks + { title: "Setup project structure", description: "Initialize project with required dependencies", category: :development }, + { title: "Implement authentication", description: "Add user authentication with OAuth2", category: :development }, + { title: "Build REST API endpoints", description: "Create RESTful API endpoints for core features", category: :development }, + { title: "Add database migrations", description: "Create and run database schema migrations", category: :development }, + { title: "Implement search functionality", description: "Add full-text search with Elasticsearch", category: :development }, + { title: "Write unit tests", description: "Add comprehensive unit test coverage", category: :development }, + { title: "Setup CI/CD pipeline", description: "Configure automated testing and deployment", category: :development }, + { title: "Optimize database queries", description: "Refactor slow queries and add indexes", category: :development }, + { title: "Add caching layer", description: "Implement Redis caching for performance", category: :development }, + { title: "Build admin dashboard", description: "Create admin interface for management", category: :development }, + + # Testing tasks + { title: "Write integration tests", description: "Add end-to-end integration test suite", category: :testing }, + { title: "Perform load testing", description: "Test application under high load conditions", category: :testing }, + { title: "Conduct security testing", description: "Run penetration tests and security scans", category: :testing }, + { title: "UAT with stakeholders", description: "User acceptance testing with business team", category: :testing }, + + # DevOps tasks + { title: "Setup monitoring", description: "Configure APM and error tracking", category: :devops }, + { title: "Implement logging", description: "Add structured logging with ELK stack", category: :devops }, + { title: "Configure backups", description: "Setup automated database backups", category: :devops }, + { title: "Setup staging environment", description: "Create staging environment matching production", category: :devops }, + { title: "Implement auto-scaling", description: "Configure horizontal pod autoscaling", category: :devops }, + + # Documentation tasks + { title: "Write API documentation", description: "Document all API endpoints with examples", category: :documentation }, + { title: "Create user guides", description: "Write comprehensive user documentation", category: :documentation }, + { title: "Record demo videos", description: "Create video tutorials for key features", category: :documentation }, + { title: "Update README", description: "Update project README with latest information", category: :documentation }, + + # Management tasks + { title: "Sprint planning", description: "Plan upcoming sprint with team", category: :management }, + { title: "Code review", description: "Review pull requests from team members", category: :management }, + { title: "Stakeholder meeting", description: "Present progress to stakeholders", category: :management }, + { title: "Team retrospective", description: "Conduct sprint retrospective meeting", category: :management }, + + # Bug fixes + { title: "Fix login bug", description: "Resolve issue with login timeout", category: :bugfix }, + { title: "Fix payment processing", description: "Debug payment gateway integration issue", category: :bugfix }, + { title: "Fix mobile responsiveness", description: "Resolve layout issues on mobile devices", category: :bugfix }, + { title: "Fix data validation", description: "Add missing validation rules", category: :bugfix }, + { title: "Fix email notifications", description: "Debug email delivery failures", category: :bugfix } +] + +# Status distribution (realistic project distribution) +# 50% todo, 30% in_progress, 20% done +def weighted_status + rand_num = rand + if rand_num < 0.5 + "todo" + elsif rand_num < 0.8 + "in_progress" + else + "done" + end +end + +# Create projects +puts "Creating projects..." +projects = projects_data.map do |project_data| + Project.create!(project_data) +end + +# Create 100 tasks distributed across projects +puts "Creating tasks..." +task_count = 0 +target_tasks = 100 + +projects.each_with_index do |project, project_index| + # Distribute tasks unevenly (some projects have more tasks) + tasks_for_project = case project_index + when 0..2 then 15 # First 3 projects get 15 tasks each + when 3..5 then 10 # Next 3 projects get 10 tasks each + when 6..8 then 7 # Next 3 projects get 7 tasks each + else 4 # Last project gets 4 tasks + end + + tasks_for_project.times do |i| + break if task_count >= target_tasks + + # Select a random task template + template = task_templates.sample + + # Determine status based on weights + status = weighted_status + + # Priority (1-5, with bias toward 2-3) + priority = [ 1, 2, 2, 3, 3, 3, 4, 4, 5 ].sample + + # Due date logic + due_date = if rand < 0.1 # 10% have no due date + nil + elsif rand < 0.2 # 20% are overdue + rand(1..14).days.ago + elsif rand < 0.5 # 30% are due soon (next 7 days) + rand(1..7).days.from_now + else # 40% are due later + rand(8..30).days.from_now + end + + # Adjust status for completed tasks (they shouldn't be overdue) + if status == "done" && due_date && due_date < Date.today + due_date = rand(1..30).days.ago + end + + Task.create!( + project: project, + title: "#{template[:title]} - Phase #{i + 1}", + description: template[:description], + status: status, + priority: priority, + due_date: due_date + ) + + task_count += 1 + end +end + +# Summary statistics +puts "\n" + "=" * 50 +puts "Seed data created successfully!" +puts "=" * 50 +puts "Projects: #{Project.count}" +puts "Tasks: #{Task.count}" +puts "\nTask Breakdown:" +puts " Todo: #{Task.where(status: 'todo').count}" +puts " In Progress: #{Task.where(status: 'in_progress').count}" +puts " Done: #{Task.where(status: 'done').count}" +puts "\nOverdue tasks: #{Task.overdue.count}" +puts "\nPriority Distribution:" +(1..5).each do |priority| + count = Task.where(priority: priority).count + puts " Priority #{priority}: #{count}" +end + +# Show project task counts +puts "\nTasks per Project:" +Project.includes(:tasks).each do |project| + incomplete = project.tasks.where.not(status: 'done').count + puts " #{project.name}: #{project.tasks.count} total (#{incomplete} incomplete)" +end +puts "=" * 50 From 9d5fdf34d728321886d462a4ae5d008b1fd70525 Mon Sep 17 00:00:00 2001 From: sbafsk Date: Sat, 24 Jan 2026 16:34:45 -0300 Subject: [PATCH 2/2] Update seeds with accurate project data from ~/apps inspection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on git history analysis of ~/apps folder: - Added 'am' project (Affiliate Marketing Rails 8 - 7 weeks ago) - Categorized by activity: active (2mo), paused (3-5mo), early stage - Updated last activity dates from actual git commits - Simplified tasks to reflect real pending work - Added task-tracker project with current work items Projects by status: 🟒 Active (6): am, supap-front, supap-back, creaciones-del-mago, personal-site, aidk 🟑 Paused (6): maicemita, avent, train-uy, pomodoro, linear-clone, trees-landing πŸ”΅ Early/Maintenance (2): aldea-infinita, ML-props-scraper 🟒 This project (1): task-tracker --- db/seeds.rb | 684 ++++++++++++++++++++-------------------------------- 1 file changed, 260 insertions(+), 424 deletions(-) diff --git a/db/seeds.rb b/db/seeds.rb index 3e23a1c..2a24969 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,611 +1,441 @@ # Real Project Data Seed File -# This file contains actual project data from your portfolio -# Fields marked with # FUTURE: are not in current schema but can be added later +# This file contains actual project data from ~/apps folder +# Last updated: January 2026 based on git history inspection # Clear existing data puts "Clearing existing data..." Task.destroy_all Project.destroy_all -puts "Creating real projects from portfolio..." +puts "Creating real projects from ~/apps portfolio..." # ============================================================================= -# 🟒 PRODUCTION & LIVE PROJECTS +# 🟒 RECENTLY ACTIVE (commits within last 2 months) # ============================================================================= -# 1. maicemita-site - E-commerce Alfajores Site -maicemita = Project.create!( - name: "maicemita-site", - description: "E-commerce site for homemade alfajores de maicena. Built with Next.js 15, TypeScript, TailwindCSS. LIVE & DEPLOYED on Vercel." - # FUTURE: tech_stack: "Next.js 15, TypeScript, TailwindCSS, Vercel" - # FUTURE: phase: "Refactoring & Optimization" - # FUTURE: completion_percentage: 95 - # FUTURE: status: "live" - # FUTURE: live_url: "https://maicemita-site-p8nj28zae-sbafsks-projects.vercel.app" - # FUTURE: last_updated: "2024-09-15" +# 1. am - Affiliate Marketing Platform (NEW!) +am = Project.create!( + name: "am", + description: "Developer Tools Affiliate Marketing Platform. Rails 8 platform for performance-based affiliate marketing. Focus on developer tools, SaaS, APIs, hosting. Last active: 7 weeks ago." ) Task.create!([ { - project: maicemita, - title: "Payment Integration", - description: "Integrate Stripe/PayPal for online payment processing", - status: "todo", + project: am, + title: "Set up affiliate tracking system", + description: "Implement custom affiliate link tracking and attribution", + status: "in_progress", priority: 1, - due_date: 30.days.from_now + due_date: 14.days.from_now }, { - project: maicemita, - title: "Order Management System", - description: "Build admin dashboard for managing customer orders", + project: am, + title: "Content automation pipeline", + description: "Build automated content distribution for SEO", status: "todo", - priority: 2, - due_date: 45.days.from_now + priority: 1, + due_date: 30.days.from_now }, { - project: maicemita, - title: "Customer Reviews Feature", - description: "Add customer reviews and ratings for products", + project: am, + title: "Analytics dashboard", + description: "Create dashboard for tracking commissions and conversions", status: "todo", - priority: 3, - due_date: 60.days.from_now - }, - { - project: maicemita, - title: "SEO Optimization", - description: "Optimize for local search and improve Google rankings", - status: "in_progress", priority: 2, - due_date: 15.days.from_now + due_date: 45.days.from_now } ]) -# 2. personal-site - Professional Portfolio -personal_site = Project.create!( - name: "personal-site", - description: "Professional portfolio and personal branding site. Showcases skills, experience, and projects. Built with Next.js 15, TypeScript, shadcn/ui." - # FUTURE: tech_stack: "Next.js 15, TypeScript, shadcn/ui, TailwindCSS" - # FUTURE: phase: "Enhanced Features & Polish" - # FUTURE: completion_percentage: 98 - # FUTURE: status: "live" - # FUTURE: live_url: "https://personal-site-lpwaqlv2j-sbafsks-projects.vercel.app" - # FUTURE: last_updated: "2025-09-29" +# 2. supap-front - SUPAP Frontend (7 weeks ago) +supap_front = Project.create!( + name: "supap-front", + description: "SUPAP (Sociedad Uruguaya de Psicoterapias Asistidas con PsicodΓ©licos) frontend. Next.js 14.2.25 + Tailwind v4. Animation system implemented. Last active: 7 weeks ago." ) Task.create!([ { - project: personal_site, - title: "Anti-Spam Protection", - description: "Implement rate limiting + CAPTCHA for contact form", + project: supap_front, + title: "Merge branding assets branch", + description: "Complete and merge feat/update-branding-assets branch", status: "in_progress", priority: 1, due_date: 7.days.from_now }, { - project: personal_site, - title: "Performance Monitoring", - description: "Set up Core Web Vitals tracking and optimization", - status: "in_progress", - priority: 2, - due_date: 10.days.from_now + project: supap_front, + title: "Spanish content population", + description: "Populate all sections with Spanish content", + status: "todo", + priority: 1, + due_date: 21.days.from_now }, { - project: personal_site, - title: "Vercel CI/CD Deployment", - description: "Configure preview deployments and automated CI/CD pipeline", + project: supap_front, + title: "Accessibility audit", + description: "WCAG compliance check and fixes", status: "todo", priority: 2, - due_date: 17.days.from_now + due_date: 30.days.from_now } ]) -# ============================================================================= -# 🟑 ACTIVE DEVELOPMENT PROJECTS -# ============================================================================= - -# 3. task-tracker - Project Management Rails App -task_tracker = Project.create!( - name: "task-tracker", - description: "Lightweight Rails task tracker for managing projects and tasks. Features: CRUD, filtering, sorting, JSON API, bulk operations with Solid Queue. 100% COMPLETE!" - # FUTURE: tech_stack: "Rails 8.0, PostgreSQL, TailwindCSS, Solid Queue" - # FUTURE: phase: "Complete - Testing & Polish" - # FUTURE: completion_percentage: 100 - # FUTURE: status: "complete" - # FUTURE: last_updated: "2025-12-04" +# 3. supap-back - SUPAP Backend (8 weeks ago) +supap_back = Project.create!( + name: "supap-back", + description: "SUPAP backend API. Spring Boot + PostgreSQL + JWT. Currently on phase-6 branch. Last active: 8 weeks ago." ) Task.create!([ { - project: task_tracker, - title: "All Assignment Requirements Met", - description: "Project and Task models, CRUD, filtering, sorting, API, tests all complete", - status: "done", - priority: 1, - due_date: 4.days.ago - }, - { - project: task_tracker, - title: "Deploy Real Project Data", - description: "Import all real portfolio projects and tasks into the system", + project: supap_back, + title: "Complete phase-6", + description: "Finish and merge phase-6 branch work", status: "in_progress", priority: 1, - due_date: Date.today - } -]) - -# 4. avent-properties - Property Booking Platform -avent = Project.create!( - name: "avent-properties", - description: "Property booking platform with tour reservations. Features: Apollo Server + Supabase, SOLID principles, validation builder pattern, repository pattern. Tour system 100% complete." - # FUTURE: tech_stack: "Next.js 15, TypeScript, Apollo + Supabase, PostgreSQL" - # FUTURE: phase: "Tour Reservation System Complete" - # FUTURE: completion_percentage: 100 (for current phase) - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-01-15" -) - -Task.create!([ - { - project: avent, - title: "Stripe Payment Integration", - description: "Integrate Stripe for secure payment processing of tour deposits and full payments", - status: "todo", - priority: 1, - due_date: 30.days.from_now + due_date: 10.days.from_now }, { - project: avent, - title: "Email Notification System", - description: "Implement automated email notifications for bookings and confirmations", + project: supap_back, + title: "JWT authentication", + description: "Configure Spring Security with JWT tokens", status: "todo", priority: 1, due_date: 20.days.from_now }, { - project: avent, - title: "Calendar Management", - description: "Add calendar view and availability checking for tours", + project: supap_back, + title: "Flyway migrations", + description: "Create initial database migration scripts", status: "todo", priority: 2, - due_date: 45.days.from_now - }, - { - project: avent, - title: "Agent Dashboard Enhancement", - description: "Enhance agent dashboard with real-time updates and analytics", - status: "in_progress", - priority: 2, - due_date: 40.days.from_now + due_date: 25.days.from_now } ]) -# 5. linear-clone - Project Management Tool Clone -linear_clone = Project.create!( - name: "linear-clone", - description: "Linear project management tool clone. Phoenix/Elixir backend with GraphQL API, Next.js frontend. Currently in resurrection/upgrade phase." - # FUTURE: tech_stack: "Phoenix/Elixir 1.7, LiveView, PostgreSQL, Absinthe GraphQL, Next.js" - # FUTURE: phase: "Resurrection Planning" - # FUTURE: completion_percentage: 10 - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-09-05" +# 4. creaciones-del-mago - Artist Portfolio (7 weeks ago) +creaciones = Project.create!( + name: "creaciones-del-mago", + description: "Artist portfolio website. Next.js 15 canary + TailwindCSS. Recently fixed Next.js 15 compatibility. Last active: 7 weeks ago." ) Task.create!([ { - project: linear_clone, - title: "Upgrade Phoenix to 1.7", - description: "Upgrade Phoenix generators and endpoint following 1.7 migration guides", - status: "todo", - priority: 1, - due_date: 15.days.from_now - }, - { - project: linear_clone, - title: "Migrate Asset Pipeline", - description: "Migrate from esbuild to tailwind + assets.deploy", + project: creaciones, + title: "Stabilize Next.js 15", + description: "Move from canary to stable Next.js 15 release", status: "todo", - priority: 1, - due_date: 20.days.from_now + priority: 2, + due_date: 14.days.from_now }, { - project: linear_clone, - title: "Audit Dependencies", - description: "Audit Absinthe/Plug versions for Phoenix 1.7 compatibility", + project: creaciones, + title: "Performance optimization", + description: "Image optimization and Core Web Vitals improvements", status: "todo", priority: 2, - due_date: 25.days.from_now + due_date: 21.days.from_now }, { - project: linear_clone, - title: "Complete GraphQL Integration", - description: "Finalize backend GraphQL API integration", + project: creaciones, + title: "Deploy to production", + description: "Final testing and production deployment", status: "todo", - priority: 2, - due_date: 45.days.from_now + priority: 1, + due_date: 30.days.from_now } ]) -# 6. train-uy - Train Route Visualization -train_uy = Project.create!( - name: "train-uy", - description: "Train route visualization and booking platform for Uruguay. Next.js + Supabase. Currently in planning phase with database architecture work." - # FUTURE: tech_stack: "Next.js 15, TypeScript, Supabase, PostgreSQL" - # FUTURE: phase: "Planning & Architecture" - # FUTURE: completion_percentage: 5 - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-09-05" +# 5. personal-site - Professional Portfolio (8 weeks ago) +personal_site = Project.create!( + name: "personal-site", + description: "Professional portfolio with crystal glass UI. Next.js (latest) + TypeScript + shadcn/ui. Theme support and performance optimization done. Last active: 8 weeks ago." ) Task.create!([ { - project: train_uy, - title: "Finalize Architecture", - description: "Finalize system architecture and MVP scope definition", - status: "in_progress", - priority: 1, - due_date: 10.days.from_now - }, - { - project: train_uy, - title: "Choose Backend Solution", - description: "Decide between Supabase vs Firebase vs custom Node.js backend", - status: "todo", - priority: 1, - due_date: 12.days.from_now - }, - { - project: train_uy, - title: "Database Schema Design", - description: "Define database schema and RBAC (Role-Based Access Control)", - status: "todo", - priority: 1, - due_date: 20.days.from_now - }, - { - project: train_uy, - title: "Integrate shadcn/ui", - description: "Set up and integrate shadcn/ui component library", + project: personal_site, + title: "Anti-spam protection", + description: "Implement rate limiting + CAPTCHA for contact form", status: "todo", priority: 2, - due_date: 25.days.from_now + due_date: 14.days.from_now }, { - project: train_uy, - title: "Prepare MVP Screens", - description: "Design and implement MVP screens and routing structure", + project: personal_site, + title: "Update portfolio projects", + description: "Add recent projects to portfolio section", status: "todo", priority: 2, - due_date: 55.days.from_now + due_date: 21.days.from_now } ]) -# 7. pomodoro - Flutter Pomodoro Timer -pomodoro = Project.create!( - name: "pomodoro", - description: "Flutter-based Pomodoro timer app for iOS and Android. Features: 25min focus timer, breaks, notifications, customization. MVP complete, ready for app store." - # FUTURE: tech_stack: "Flutter 3.35.3, Dart 3.9.2" - # FUTURE: phase: "MVP Complete" - # FUTURE: completion_percentage: 80 - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-01-05" +# 6. ai-assistant-development-kit (7 weeks ago) +aidk = Project.create!( + name: "ai-assistant-development-kit", + description: "Collection of boilerplate projects: Rails, Spring Boot, Next.js, Elixir, Flutter, Playwright. Recently added Java Spring Boot boilerplate. Last active: 7 weeks ago." ) Task.create!([ { - project: pomodoro, - title: "App Store Preparation", - description: "Prepare app store listing, screenshots, and descriptions for iOS and Android", - status: "in_progress", - priority: 1, - due_date: 10.days.from_now - }, - { - project: pomodoro, - title: "Final Testing", - description: "Complete final testing on multiple devices and OS versions", - status: "in_progress", - priority: 1, - due_date: 7.days.from_now - }, - { - project: pomodoro, - title: "App Icons & Screenshots", - description: "Create professional app icons and store screenshots", + project: aidk, + title: "Update Rails boilerplate to 8.0", + description: "Upgrade Rails template to Rails 8.0 with Solid Queue", status: "todo", - priority: 2, - due_date: 5.days.from_now + priority: 3, + due_date: nil }, { - project: pomodoro, - title: "App Store Submission", - description: "Submit app to iOS App Store and Google Play Store", + project: aidk, + title: "Document all boilerplates", + description: "Create comprehensive README for each boilerplate", status: "todo", - priority: 1, - due_date: 15.days.from_now + priority: 3, + due_date: nil } ]) -# 8. supap-front - SUPAP Frontend -supap_front = Project.create!( - name: "supap-front", - description: "SUPAP (Sociedad Uruguaya de Psicoterapias Asistidas con PsicodΓ©licos) frontend. Next.js 14 with Tailwind v4, comprehensive animation system implemented." - # FUTURE: tech_stack: "Next.js 14, Tailwind v4, shadcn/ui, Radix UI" - # FUTURE: phase: "UI/UX Enhancement + Animation System" - # FUTURE: completion_percentage: 42 - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-12-01" +# ============================================================================= +# 🟑 PAUSED PROJECTS (3-5 months inactive) +# ============================================================================= + +# 7. maicemita-site - E-commerce (4 months ago) +maicemita = Project.create!( + name: "maicemita-site", + description: "E-commerce for homemade alfajores. Next.js 15 + TypeScript + TailwindCSS. Phase 1 refactoring complete. PAUSED - Last active: 4 months ago." ) Task.create!([ { - project: supap_front, - title: "Brand Assets Integration", - description: "Export and integrate SUPAP brand assets (logo, colors, fonts)", - status: "in_progress", - priority: 1, - due_date: 8.days.from_now - }, - { - project: supap_front, - title: "Spanish Content Population", - description: "Populate all sections with Spanish content and translations", + project: maicemita, + title: "Payment integration", + description: "Integrate Stripe/PayPal for payments", status: "todo", priority: 1, - due_date: 20.days.from_now - }, - { - project: supap_front, - title: "Accessibility Testing", - description: "Run accessibility checks and ensure WCAG compliance", - status: "todo", - priority: 2, - due_date: 25.days.from_now + due_date: nil }, { - project: supap_front, - title: "Mobile Responsiveness", - description: "Test and optimize mobile responsiveness across devices", + project: maicemita, + title: "Order management system", + description: "Build admin dashboard for orders", status: "todo", priority: 2, - due_date: 25.days.from_now + due_date: nil } ]) -# 9. supap-back - SUPAP Backend API -supap_back = Project.create!( - name: "supap-back", - description: "SUPAP backend API. Spring Boot + PostgreSQL + JWT authentication. Currently in Phase 0: Documentation & Configuration Setup (90% complete)." - # FUTURE: tech_stack: "Spring Boot, PostgreSQL, JWT, Flyway, JPA" - # FUTURE: phase: "Phase 0 - Documentation & Configuration" - # FUTURE: completion_percentage: 15 - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-11-24" +# 8. avent-properties - Property Platform (5 months ago) +avent = Project.create!( + name: "avent-properties", + description: "Property booking platform with tour reservations. Next.js 15.2.4 + Apollo + Supabase. Tour system complete. PAUSED - Last active: 5 months ago." ) Task.create!([ { - project: supap_back, - title: "Complete Standards Documentation", - description: "Finish SUPAP-specific standards and coding guidelines documentation", - status: "in_progress", - priority: 1, - due_date: 5.days.from_now - }, - { - project: supap_back, - title: "Create Java Package Structure", - description: "Set up Java package structure for uy.supap domain", + project: avent, + title: "Stripe payment integration", + description: "Add payment processing for tour deposits", status: "todo", priority: 1, - due_date: 10.days.from_now + due_date: nil }, { - project: supap_back, - title: "Implement User & Role Entities", - description: "Create User and Role JPA entities with relationships", + project: avent, + title: "Email notifications", + description: "Automated booking confirmations", status: "todo", - priority: 1, - due_date: 15.days.from_now - }, + priority: 2, + due_date: nil + } +]) + +# 9. train-uy - Train Visualization (5 months ago) +train_uy = Project.create!( + name: "train-uy", + description: "Train route visualization for Uruguay. Next.js 15.2.4 + Supabase. Fixed RSC webpack issues. PAUSED - Last active: 5 months ago." +) + +Task.create!([ { - project: supap_back, - title: "Configure Spring Security + JWT", - description: "Set up Spring Security with JWT token authentication", + project: train_uy, + title: "Database schema design", + description: "Define schema for routes, stations, schedules", status: "todo", priority: 1, - due_date: 20.days.from_now + due_date: nil }, { - project: supap_back, - title: "Create Flyway Migrations", - description: "Write initial Flyway migration scripts for database schema", + project: train_uy, + title: "Map visualization", + description: "Implement interactive route map", status: "todo", priority: 2, - due_date: 22.days.from_now + due_date: nil } ]) -# ============================================================================= -# πŸ”΅ PLANNING & EARLY STAGE PROJECTS -# ============================================================================= - -# 10. aldea-infinita - Community Platform -aldea = Project.create!( - name: "aldea-infinita", - description: "Community platform project. Next.js + Supabase (not configured yet). Early development stage focusing on project setup." - # FUTURE: tech_stack: "Next.js, Supabase (planned), TypeScript" - # FUTURE: phase: "Early Development - Project Setup" - # FUTURE: completion_percentage: 15 - # FUTURE: status: "planning" - # FUTURE: last_updated: "2025-11-03" +# 10. pomodoro - Flutter Timer (5 months ago) +pomodoro = Project.create!( + name: "pomodoro", + description: "Flutter Pomodoro timer app for iOS/Android. MVP complete. PAUSED - Last active: 5 months ago." ) Task.create!([ { - project: aldea, - title: "Brand Assets Setup", - description: "Gather and integrate brand assets and design system", + project: pomodoro, + title: "App store submission", + description: "Submit to iOS App Store and Google Play", status: "todo", - priority: 2, - due_date: 30.days.from_now + priority: 1, + due_date: nil }, { - project: aldea, - title: "Content Population", - description: "Create and populate Spanish content for all sections", + project: pomodoro, + title: "Marketing assets", + description: "Create app icons and store screenshots", status: "todo", priority: 2, - due_date: 45.days.from_now - }, - { - project: aldea, - title: "Accessibility Review", - description: "Conduct accessibility and responsiveness checks", - status: "todo", - priority: 3, - due_date: 60.days.from_now + due_date: nil } ]) -# 11. creaciones-del-mago - Artist Portfolio -creaciones = Project.create!( - name: "creaciones-del-mago", - description: "Artist portfolio website. Next.js + TailwindCSS. UI enhancement and UX optimization phase (75% complete)." - # FUTURE: tech_stack: "Next.js, TailwindCSS" - # FUTURE: phase: "UI Enhancement & UX Optimization" - # FUTURE: completion_percentage: 75 - # FUTURE: status: "planning" - # FUTURE: last_updated: "2025-09-28" +# 11. linear-clone - Project Management (5 months ago) +linear_clone = Project.create!( + name: "linear-clone", + description: "Linear PM tool clone. Phoenix/Elixir + GraphQL + Next.js frontend. Added docs and setup guides. PAUSED - Last active: 5 months ago." ) Task.create!([ { - project: creaciones, - title: "Performance Optimization", - description: "Optimize images, lazy loading, and Core Web Vitals", + project: linear_clone, + title: "Upgrade Phoenix to 1.7", + description: "Follow Phoenix 1.7 migration guide", status: "todo", priority: 2, - due_date: 20.days.from_now + due_date: nil }, { - project: creaciones, - title: "Mobile Responsiveness Testing", - description: "Test and fix mobile layout issues across devices", + project: linear_clone, + title: "Complete GraphQL API", + description: "Finish backend Absinthe GraphQL implementation", status: "todo", priority: 2, - due_date: 25.days.from_now - }, - { - project: creaciones, - title: "Accessibility Audit", - description: "Run WCAG accessibility audit and implement fixes", - status: "todo", - priority: 3, - due_date: 35.days.from_now + due_date: nil } ]) -# 12. trees-software/trees-landing - Company Landing Page +# 12. trees-software-landing (4 months ago) trees = Project.create!( name: "trees-software-landing", - description: "Trees Software company landing page. Next.js 15 + TypeScript + TailwindCSS. Active development with 65% completion." - # FUTURE: tech_stack: "Next.js 15, TypeScript, TailwindCSS" - # FUTURE: phase: "Active Development" - # FUTURE: completion_percentage: 65 - # FUTURE: status: "active_development" - # FUTURE: last_updated: "2025-01-14" + description: "Trees Software company landing page. Next.js 14.2.25 + TypeScript + TailwindCSS. Docs and AI tooling added. PAUSED - Last active: 4 months ago." ) Task.create!([ { project: trees, - title: "Coding Standards Implementation", - description: "Implement and enforce coding standards across the codebase", - status: "in_progress", - priority: 2, - due_date: 8.days.from_now - }, - { - project: trees, - title: "UI Polish and Refinement", - description: "Polish UI components and refine overall user experience", + title: "UI polish", + description: "Final UI refinements and animations", status: "todo", priority: 2, - due_date: 15.days.from_now + due_date: nil }, { project: trees, - title: "Testing and Deployment", - description: "Set up testing infrastructure and deploy to production", + title: "Production deployment", + description: "Deploy to production environment", status: "todo", priority: 1, - due_date: 25.days.from_now + due_date: nil } ]) # ============================================================================= -# πŸ”§ MAINTENANCE / BACKLOG PROJECTS +# πŸ”΅ EARLY STAGE / MINIMAL ACTIVITY # ============================================================================= -# 13. scrappers/ML-props - Property Scraper -scrappers = Project.create!( - name: "ML-props-scraper", - description: "Web scraper for ML properties using Playwright. Maintenance mode." - # FUTURE: tech_stack: "Playwright, Node.js" - # FUTURE: status: "maintenance" +# 13. aldea-infinita - Community Platform (no git history) +aldea = Project.create!( + name: "aldea-infinita", + description: "Community platform project. Next.js 16 + Supabase (planned). Early stage - just initialized." ) Task.create!([ { - project: scrappers, - title: "Update Scraper Selectors", - description: "Update CSS selectors if website structure changed", + project: aldea, + title: "Initial project setup", + description: "Configure project structure and dependencies", status: "todo", - priority: 4, + priority: 2, due_date: nil }, { - project: scrappers, - title: "Add Error Handling", - description: "Improve error handling and retry logic", + project: aldea, + title: "Define MVP scope", + description: "Document core features for MVP", status: "todo", - priority: 4, + priority: 2, due_date: nil } ]) -# 14. AI Assistant Development Kit - Boilerplates Collection -aidk = Project.create!( - name: "ai-assistant-development-kit", - description: "Collection of boilerplate projects: Rails, Spring Boot, Next.js, Elixir, Flutter, Playwright scrapers. Reference architecture and starting points." - # FUTURE: tech_stack: "Multiple (Rails, Spring Boot, Next.js, Elixir, Flutter, Playwright)" - # FUTURE: status: "maintenance" +# 14. ML-props-scraper - Property Scraper +scrappers = Project.create!( + name: "ML-props-scraper", + description: "Web scraper for ML properties using Playwright. Maintenance mode." ) Task.create!([ { - project: aidk, - title: "Update Rails Boilerplate", - description: "Update Rails boilerplate to Rails 8.0", + project: scrappers, + title: "Update selectors", + description: "Update CSS selectors if site structure changed", status: "todo", - priority: 3, + priority: 4, due_date: nil + } +]) + +# ============================================================================= +# 🟒 THIS PROJECT - task-tracker +# ============================================================================= + +task_tracker = Project.create!( + name: "task-tracker", + description: "Rails 8 task management app. CRUD, filtering, sorting, JSON API, Solid Queue. Docker deployment added. THIS PROJECT - actively maintained." +) + +Task.create!([ + { + project: task_tracker, + title: "Core features complete", + description: "All assignment requirements met: models, CRUD, filtering, API, tests", + status: "done", + priority: 1, + due_date: 4.days.ago }, { - project: aidk, - title: "Update Next.js Boilerplate", - description: "Update Next.js boilerplate to Next.js 15", - status: "todo", - priority: 3, - due_date: nil + project: task_tracker, + title: "Docker deployment", + description: "Local Docker deployment with docker-compose", + status: "done", + priority: 1, + due_date: Date.today }, { - project: aidk, - title: "Document All Boilerplates", - description: "Create comprehensive documentation for each boilerplate", - status: "todo", - priority: 3, - due_date: nil + project: task_tracker, + title: "Render deployment fix", + description: "Fix preDeployCommand for Render.com", + status: "done", + priority: 1, + due_date: Date.today + }, + { + project: task_tracker, + title: "Import real project data", + description: "Populate with actual portfolio projects from ~/apps", + status: "in_progress", + priority: 1, + due_date: Date.today } ]) @@ -637,23 +467,29 @@ puts " #{priority_label}: #{count}" end -puts "\nπŸ“ Tasks per Project:" -Project.includes(:tasks).order(:name).each do |project| - total = project.tasks.count - incomplete = project.tasks.where.not(status: 'done').count - done = project.tasks.where(status: 'done').count - in_progress = project.tasks.where(status: 'in_progress').count - - status_icon = if done == total - "βœ…" - elsif in_progress > 0 - "πŸ”„" - else - "πŸ“" - end +puts "\nπŸ“ Projects by Activity Status:" +puts "\n🟒 RECENTLY ACTIVE (last 2 months):" +%w[am supap-front supap-back creaciones-del-mago personal-site ai-assistant-development-kit].each do |name| + p = Project.find_by(name: name) + puts " β€’ #{p.name}: #{p.tasks.count} tasks" if p +end + +puts "\n🟑 PAUSED (3-5 months):" +%w[maicemita-site avent-properties train-uy pomodoro linear-clone trees-software-landing].each do |name| + p = Project.find_by(name: name) + puts " β€’ #{p.name}: #{p.tasks.count} tasks" if p +end - puts " #{status_icon} #{project.name}: #{total} total (#{incomplete} incomplete, #{done} done)" +puts "\nπŸ”΅ EARLY STAGE / MAINTENANCE:" +%w[aldea-infinita ML-props-scraper].each do |name| + p = Project.find_by(name: name) + puts " β€’ #{p.name}: #{p.tasks.count} tasks" if p end + +puts "\n🟒 THIS PROJECT:" +p = Project.find_by(name: "task-tracker") +puts " β€’ #{p.name}: #{p.tasks.count} tasks (#{p.tasks.where(status: 'done').count} done)" if p + puts "=" * 70 puts "\nπŸ’‘ TIP: Run 'rails db:seed:replant' to reset and reload this data" puts "=" * 70