Conversation
…ct (#1) * feat: Complete blockchain integration with SimpleBadge contract 🚀 Major Features Added: - Deployed SimpleBadge ERC1155 contract to Celo Alfajores (0x7Ed5CC0cf0B0532b52024a0DDa8fAE24C6F66dc3) - Real on-chain enrollment system replacing placeholder alerts - ERC1155 metadata API for course badges (/api/metadata/milestone/[tokenId]) 🔧 Smart Contract Integration: - SimpleBadge.sol contract with claim functionality - React hooks for blockchain interactions (useSimpleBadge.ts) - Wagmi/Viem integration for wallet connections - Dynamic Web3EnrollPanel for client-side blockchain interactions 🎨 UI/UX Improvements: - Enhanced enrollment UI with loading states - Real-time transaction tracking and feedback - Success/error handling with blockchain explorer links - SSR-compatible Web3 components (fixes WagmiProvider issues) 📋 API & Backend: - Metadata endpoints for NFT compliance - Course token ID mapping (desarrollo-dapps = token 1) - Environment variable configuration for contract addresses 🏗️ Infrastructure: - Hardhat compilation fixes (ESM compatibility) - Updated Providers component structure - Fixed ThemeProvider conflicts - Production-ready environment setup ✅ Verified Working: - Contract deployment and testing completed - Enrollment flow functional end-to-end - SSR/hydration issues resolved - Ready for Vercel deployment * chore: Add Vercel deployment configuration and comprehensive guide 📦 Deployment Setup: - Enhanced vercel.json with production optimizations - Security headers and CORS configuration - Regional deployment settings (cle1) - API function timeout configuration 📚 Documentation: - Complete Vercel deployment guide with step-by-step instructions - Production environment variables template - SSL and security configuration details - Troubleshooting and monitoring guides 🔧 CLI Integration: - Vercel CLI successfully installed and authenticated - Ready for deployment with proper build commands - Prisma generation included in build process ✅ Production Ready: - Environment variable templates provided - Security headers configured - Database SSL support documented - Health check endpoints configured * docs: Add deployment completion summary - Document all blockchain integration work completed - Detail Vercel deployment readiness status - Provide comprehensive next steps guide - Include success metrics and verification steps
…t on create for Category, Level, Instructor, Course, Module, Lesson
…on in admin courses API
…ess creation in progress API
…le, Course, Lesson)
…and excluding config files from compilation - Fix TypeScript error in auth middleware by converting null to undefined - Exclude Playwright and Jest configs from TypeScript compilation - Build now passes successfully locally
- Disable todos page temporarily to prevent Supabase build errors - Make academy generateStaticParams more robust with database fallbacks - Remove SSL certificate path dependency for Vercel deployment - Build now succeeds locally and should work on Vercel
- Configure SSL certificate from environment variable in Vercel - Write SSL cert to temp file for Prisma in production - Keep SSL security while making it work in serverless environment - Update DATABASE_URL to use SSL without file path dependency
…API error handling, and seed admin data
…ation for /api/admin routes and improve error handling
…int violation by deleting lessons before modules, add proper slug validation for updates, and improve slug generation with timestamp suffix to avoid duplicates
…eserved word conflict
…alidate, and redirect to list after update
…erview with delay, and show helpful success messages
- Implement dynamic token ID generation from course database IDs - Add comprehensive deployment guide (DEPLOYMENT_GUIDE.md) - Document NFT solution architecture (DYNAMIC_NFT_SOLUTION.md) - Update SimpleBadge hook to use dynamic token IDs - Enhance metadata API to fetch course data from database - Update enrollment panel with dynamic token support - Complete pre-deployment testing and verification
- Add address trimming and validation in useSimpleBadge hook - Prevent invalid addresses with trailing spaces - Add format validation (0x prefix and 42 char length) - Add deployment monitoring scripts with comprehensive features - Create deploy-and-monitor.sh for automated deployment workflow - Create monitor-deployment.sh for real-time deployment tracking - Add detailed documentation for deployment scripts
- Create PRODUCTION_STATUS.md as single source of truth (85/100 score) - Update README.md with current tech stack and features - Archive outdated production assessment docs (5 files) - Remove redundant deployment summaries (3 files) - Keep only current and essential documentation (6 core files) - Add comprehensive cleanup plan and documentation index - Improve documentation hierarchy and discoverability Files Kept (6): - README.md (updated) - PRODUCTION_STATUS.md (new) - DEPLOYMENT_GUIDE.md - DEPLOYMENT_SUMMARY.md - DYNAMIC_NFT_SOLUTION.md - scripts/README.md Files Archived (5): - PRODUCTION_READINESS_ASSESSMENT.md - PRODUCTION_READINESS_CHECKLIST.md - PRODUCTION_READINESS_UPDATE_2025.md - FUNCTIONALITY_ASSESSMENT_2025.md - HARDHAT_DEPLOYMENT_GUIDE.md Files Removed (3): - DEPLOYMENT_COMPLETE_SUMMARY.md - DEPLOYMENT_SETUP_SUMMARY.md - VERCEL_DEPLOYMENT_GUIDE.md
- Add CoursePaywall component with beautiful locked content UI - Create LessonAccessWrapper for client-side enrollment verification - Implement enrollment-verification utility for server-side checks - Integrate NFT badge verification into course lesson pages - Add three paywall states: WALLET_NOT_CONNECTED, NOT_ENROLLED, LOADING - Display enrollment benefits and direct enrollment action - Real-time verification using Wagmi hooks - Smooth hydration handling to prevent flash of content - Free enrollment with only gas fees (~-zsh.001 USD) - Complete documentation in COURSE_PAYWALL.md Features: - 🔒 Lessons locked until NFT badge claimed - ✨ Beautiful paywall UI with clear messaging - 🚀 One-click enrollment from paywall - 🔄 Real-time access updates - 📊 Verifiable on-chain enrollment - 🎯 Course overview remains public - 🛡️ Client-side verification (fast, no server load) - 📱 Mobile-friendly paywall design Benefits: - Decentralized enrollment system - No personal info required (wallet-based) - Permanent proof of enrollment - Easy to extend for paid courses - Fraud prevention through blockchain Security: Client-side verification (can add server-side later)
… sync - Add alt attribute to MDX img component - Stop creating users in sync-enrollment; require existing user and generate enrollment id
- Fetch /api/courses/[slug]/enrollment-count client-side - Feed learners into CourseHeader/EnrollPanel/Web3EnrollPanel
- Web3EnrollPanel: POST /api/courses/[slug]/sync-enrollment after success - CourseDetailClient: refetch count when enrollmentSuccess changes - Academy index: use Prisma _count to show CourseEnrollment counts
- Fetch count on mount, refetch on enroll success - Auto-sync to /api/courses/[slug]/sync-enrollment when on-chain enrolled - Provide enrollmentCount to consumers
…nd add immediate + retry DB sync from context for live counts
…rseCard fetches count client-side for list without reload
…king didSync after context sync
|
@cultureic is attempting to deploy a commit to the CeloMexico's projects Team on Vercel. A member of the Team first needs to authorize it. |
…, me, create/update/delete, eligibility) with revalidation
…satisfy relation requirements (non-destructive)
…n (drift fix, non-destructive)
…ment reviews API updates with revalidation - Add CourseReviews component and textarea UI - Add /api/courses/[slug]/progress endpoint (server-side progress) - Update reviews API (list/me/create/update/delete), enforce eligibility, and trigger revalidation - Prisma: add tokenId migration and schema drift fix - Docs: add docs/technical/COURSE_REVIEWS_PLAN.md Note: Excludes env/keys and other sensitive files. Lint and type-check pass.
…rd hover readability - CourseCurriculum: set main/module/submodule titles to text-celo-yellow and adjust index pills to black/yellow - Ensure item cards show readable text on hover (text-black)
… (use celoLegacy-yellow)
…bg + yellow text); feat(landing): add prominent CTA to Deform form
… modes; content: rename landing CTA to 'applica al buildathon'
…ight/yellow; content: fix CTA text to 'aplica al buildathon'
…(theme-agnostic); fix landing CTA to use legacy yellow bg so text not black-on-black
* feat(api): add enrollment count and sync-enrollment endpoints only
- GET /api/courses/[slug]/enrollment-count
- POST /api/courses/[slug]/sync-enrollment (body: { address })
Everything else matches origin/main.
* fix: satisfy ESLint alt text and require existing user for enrollment sync
- Add alt attribute to MDX img component
- Stop creating users in sync-enrollment; require existing user and generate enrollment id
* feat(ui): show live student count on course detail via API fetch
- Fetch /api/courses/[slug]/enrollment-count client-side
- Feed learners into CourseHeader/EnrollPanel/Web3EnrollPanel
* feat: sync DB enrollment after on-chain enroll and display live counts
- Web3EnrollPanel: POST /api/courses/[slug]/sync-enrollment after success
- CourseDetailClient: refetch count when enrollmentSuccess changes
- Academy index: use Prisma _count to show CourseEnrollment counts
* feat(enrollment): context now syncs DB and exposes enrollmentCount
- Fetch count on mount, refetch on enroll success
- Auto-sync to /api/courses/[slug]/sync-enrollment when on-chain enrolled
- Provide enrollmentCount to consumers
* fix(ui): declare enrollment before using it in effect deps (no TS error)
* feat(enrollment): upsert user+enrollment on sync, revalidate pages, and add immediate + retry DB sync from context for live counts
* feat(ui): show live enrollment count in CourseHeader via context; CourseCard fetches count client-side for list without reload
* fix(count): avoid double counting by removing panel-side sync and marking didSync after context sync
* fix(eslint): call useEnrollment at top level in CourseHeader (no hooks-in-callback)
* fix(build): import React in CourseCard to use React.useState/useEffect
* fix(build): use named React hooks (useState/useEffect) to avoid UMD global error
* feat(reviews): scaffold API endpoints and ReviewsContext (pending Prisma model)
* feat(reviews): add CourseReview model and implement reviews API (list, me, create/update/delete, eligibility) with revalidation
* fix(prisma): add back-relations CourseReview[] on Course and User to satisfy relation requirements (non-destructive)
* chore(prisma): add tokenId to Course model to match existing DB column (drift fix, non-destructive)
* feat(reviews): scaffold CourseReviews UI and progress endpoint; implement reviews API updates with revalidation
- Add CourseReviews component and textarea UI
- Add /api/courses/[slug]/progress endpoint (server-side progress)
- Update reviews API (list/me/create/update/delete), enforce eligibility, and trigger revalidation
- Prisma: add tokenId migration and schema drift fix
- Docs: add docs/technical/COURSE_REVIEWS_PLAN.md
Note: Excludes env/keys and other sensitive files. Lint and type-check pass.
* ui(theme-yellow): make curriculum titles and pills yellow; improve card hover readability
- CourseCurriculum: set main/module/submodule titles to text-celo-yellow and adjust index pills to black/yellow
- Ensure item cards show readable text on hover (text-black)
* feat(footer): add external links and force yellow icons across themes (use celoLegacy-yellow)
* ui(theme-yellow): outline course list buttons for yellow mode (black bg + yellow text); feat(landing): add prominent CTA to Deform form
* ui(academy): force 'Ver curso' buttons to yellow text on black in all modes; content: rename landing CTA to 'applica al buildathon'
* ui(academy): outline 'Ver curso' buttons with yellow text/border on light/yellow; content: fix CTA text to 'aplica al buildathon'
* fix(theme-yellow): force outlined yellow text on course list buttons (theme-agnostic); fix landing CTA to use legacy yellow bg so text not black-on-black
…; keep dark mode solid yellow
…tline (light) and solid yellow (dark)
… in buildathon page/assets and header/footer updates
…d background-attachment: fixed on mobile; respect reduced motion
…le translateY fallback
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.