The Duolingo of programming, built for people who want to think like developers.
๐ Live Demo ยท Report a Bug ยท Request a Feature
- About
- Features
- Screenshots
- How It Works
- Tech Stack
- Getting Started
- Project Structure
- App Pages
- Data Model
- Deployment
- Roadmap
- Contributing
- License
Most coding platforms ask you to write code from a blank screen. But in real jobs, developers spend most of their time reading and fixing code that already exists.
Debugg is an interactive debugging practice platform that helps developers improve their problem-solving skills by identifying and fixing bugs in existing code. Users can explore programming challenges, track their progress, earn XP, and participate in community discussions. Instead of focusing only on writing code from scratch, Debugg encourages learners to develop the debugging skills used in real-world software development.
| Feature | Description | |
|---|---|---|
| ๐ | Debug Real Code | Fix actual buggy snippets in JavaScript, Python, Java, HTML and more |
| ๐ฎ | Levels & XP | Move through difficulty tiers, unlock new challenges, earn XP per fix |
| ๐ | Daily Challenge | A fresh timed challenge every day with a live countdown |
| ๐ | Leaderboard | Compete globally, ranked by XP |
| ๐ | Profile & Badges | Track your stats and collect badges as you improve |
| ๐ฌ | Community | Post questions, share tips, comment and like |
| ๐ | User-Submitted Challenges | Upload your own challenges for the community |
| ๐ ๏ธ | Dev Dashboard | Review, approve or reject submissions and publish them as live challenges |
| ๐ | Light / Dark Mode | Full theme toggle across the whole app |
| ๐ | Authentication | Email/password and Google sign-in via Firebase Auth |
| โ๏ธ | Realtime Data | Challenges, users, posts and submissions live in Cloud Firestore |
1. Dashboard
|
2. Challenge (Debug View)
|
3. Leaderboard
|
4. Community
|
Pick a language โ Choose a level โ Read the buggy code โ Select the faulty line
โ Apply your fix โ Run it โ Submit โ Earn XP, badges & leaderboard rank
- Choose a language, topic and difficulty on the Levels page (or take the Daily Challenge).
- Spot the bug by selecting the faulty line in the debug view.
- Fix it, run the code, and submit.
- Level up โ correct fixes award XP, unlock harder challenges, and move you up the leaderboard.
| Layer | Technology |
|---|---|
| Frontend | React + TypeScript (functional components & hooks) |
| Styling | Custom CSS with Nunito, Fredoka One and JetBrains Mono (Google Fonts) |
| Auth | Firebase Authentication (Email/Password, Google OAuth via signInWithPopup) |
| Database | Cloud Firestore |
| Backend | Firebase Cloud Functions (/functions) |
| Hosting | Render |
git clone https://github.com/dharmikadyuti/Debugg---Learning-App.git
cd Debugg---Learning-Appnpm install- Create a project in the Firebase Console.
- Register a Web App and copy its Firebase configuration.
- Enable Email/Password and Google sign-in under Authentication.
- Create a Cloud Firestore database.
Configure your Firebase credentials using the method
expected by the application. If using Vite environment
variables, define the required VITE_FIREBASE_* variables
in your local environment and your deployment provider.
Never commit private service-account credentials or environment files containing secrets.
Then create a .env.local file in the project root:
# Replace the prefix if your setup uses a different one (e.g. VITE_)
REACT_APP_FIREBASE_API_KEY=your_api_key
REACT_APP_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_idYour Firebase initialization (src/firebase.ts) reads from these values:
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_FIREBASE_APP_ID,
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);
โ ๏ธ Never commit.env.local. It is already covered by.gitignore.
npm install -g firebase-tools
firebase login
firebase deploy --only firestore:rulesnpm startThe app will be available at http://localhost:3000.
Debugg---Learning-App/
โโโ public/ # Static assets
โโโ src/
โ โโโ App.tsx # Main app and page components
โ โโโ firebase.ts # Firebase initialization
โ โโโ styles.css # Global styles
โ โโโ ...
โโโ functions/ # Firebase Cloud Functions
โโโ docs/images/ # README screenshots
โโโ firebase.json # Firebase project configuration
โโโ firestore.rules # Firestore security rules
โโโ .firebaserc # Firebase project alias
โโโ .eslintrc.json # ESLint configuration
โโโ tsconfig.json # TypeScript configuration
โโโ package.json
| Page | Description |
|---|---|
| Landing | Hero page with feature highlights and stats |
| Auth | Email/password and Google login & sign-up |
| Dashboard | Overview of available challenges with filters |
| Levels | Language โ topic โ difficulty selection with unlockable levels |
| Challenge | Interactive debug view: select the buggy line, apply a fix, run, submit |
| Daily Challenge | Timed challenge with a countdown to the next one |
| Leaderboard | Global XP rankings |
| Discuss | Community feed: post, comment, like |
| Profile | Stats, badges, and a form to submit your own challenge |
| Dev Dashboard | Review and publish community-submitted challenges |
Debugg stores its data in these Firestore collections:
| Collection | Purpose |
|---|---|
users |
Profiles, XP, badges, progress |
challenges |
Published debugging challenges |
posts |
Community posts, comments and likes |
submissions |
User-submitted challenges awaiting review |
The live app is hosted on Render: debugg-learning-app-po2u.onrender.com
To deploy your own copy:
- Push the repo to GitHub.
- Create a new Static Site on Render and connect the repo.
- Set the build command to
npm run buildand the publish directory tobuild. - Add your Firebase environment variables in Render's dashboard.
- In Firebase Console โ Authentication โ Settings โ Authorized domains, add your Render domain so Google sign-in works.
The free Render tier may spin down when idle, so the first load can take a few seconds.
- Multi-language debugging challenges
- XP, levels and global leaderboard
- Daily challenge with countdown
- Community discussion feed
- User-submitted challenges with a moderation dashboard
- Light / dark theme
- Support for more programming languages
- Streaks and achievement milestones
- More advanced debugging challenges
- Personalized challenge recommendations based on performance
- Automated challenge validation
- Unit and end-to-end tests
Contributions are welcome, whether it's a new challenge, a bug fix, or a feature idea.
- Fork the project
- Create your branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m "Add amazing feature" - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
You can also open an issue to discuss ideas first.
No license has been added yet. Consider adding one (for example MIT) so others know how they can use this project.
Dharmika Dyuti GitHub: @dharmikadyuti
If you like Debugg, give it a โญ โ it really helps!




