An AI-powered programming practice platform for Intro to Programming students, tailored to mimic topics, problems and formats seen in a student's specific class.
Programmy helps students master programming concepts through personalized practice problems, instant feedback, and AI-powered assistance. Uses RAG techniques to tailor problems based on course content stored in the cloud. Built with Next.js and AWS Bedrock, it provides a seamless learning experience for both code writing and code tracing problems.
- 🤖 AI-generated practice problems
- 📝 Code writing and code tracing problem
- 🎯 Difficulty-based problem generation
- 💡 Instant feedback and explanations
- 🤝 AI assistant poewred with context for debugging help
- 📱 Responsive design for all devices
- Frontend: Next.js, TypeScript, Tailwind CSS
- Authentication: Auth0
- AI/ML: AWS Bedrock, AWS Knowledge Base, AWS S3
- Styling: Tailwind CSS
- Deployment: Vercel
-
Clone the repository:
git clone https://github.com/yourusername/programmy.git cd programmy -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env.local
Fill in your Auth0 and AWS credentials in
.env.local -
Run the development server:
npm run dev
-
Open http://localhost:3000 in your browser
Create a .env.local file with the following variables:
# Auth0 Configuration
AUTH0_SECRET='your-auth0-secret'
AUTH0_BASE_URL='http://localhost:3000'
AUTH0_ISSUER_BASE_URL='your-auth0-domain'
AUTH0_CLIENT_ID='your-auth0-client-id'
AUTH0_CLIENT_SECRET='your-auth0-client-secret'
# AWS Bedrock credentials
AWS_REGION='your-aws-region'
AWS_ACCESS_KEY_ID='your-aws-access-key'
AWS_SECRET_ACCESS_KEY='your-aws-secret-key'
AWS_KNOWLEDGE_BASE_ID='your-knowledge-base-id'programmy/
├── src/
│ ├── app/ # Next.js app router
│ ├── components/ # Reusable components
│ ├── context/ # React context providers
│ ├── types/ # TypeScript type definitions
│ └── config/ # Configuration files
├── public/ # Static assets
└── package.json # Project dependencies
- Fork the repository
- Create your 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.