DEV Community

Ankur jha
Ankur jha

Posted on

PD2 & PD3 Coach: A Free Danish Exam Prep App Built for Everyday Learning

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission đź’¸

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle.

What I Built

Learning Danish while working and managing family life can be challenging. Preparing for Prøve i Dansk 2 (PD2) or Prøve i Dansk 3 (PD3) requires more than memorising vocabulary: learners need to practise reading, writing, speaking, and grammar consistently.

I built PD2 & PD3 Coach, a browser-based study application designed to bring these activities together in one place.

The goal is to make structured Danish exam preparation accessible without requiring a subscription, account, or backend service.

Features

  • Reading: Practise exam-style reading exercises and check answers.
  • Writing: Practise emails, letters, and argumentative essays with prompts, phrase banks, and writing checks.
  • Speaking: Prepare picture descriptions, personal experiences, opinions, and discussion topics.
  • Grammar: Learn word order, adjective agreement, tenses, modal verbs, and prepositions.
  • Vocabulary: Practise Danish verbs, adjectives, and vocabulary using spaced repetition.
  • Progress tracking: Review practice attempts, scores, and mistakes.
  • Study planning: Organise revision and focus on weaker areas.
  • AI Coach: Get rule-based study guidance and language lookups, with optional conversational feedback using your own OpenAI API key.

The app supports both PD2 and PD3, with learning content adapted to each level.

Demo

Try the live application:

Open PD2 & PD3 Coach

The app runs in the browser, and learning progress is stored locally.

I also use GoatCounter for privacy-friendly visitor analytics:

View PD2 Coach analytics

Code

The project source code is available on GitHub:

Explore the PD2 & PD3 Coach repository

The repository includes the application source, structured learning content, exam-document extraction scripts, and deployment workflow.

How I Built It

The application uses React, TypeScript, Vite, React Router, and Tailwind CSS. It is deployed to GitHub Pages, and browser localStorage keeps learning progress and settings available between visits.

The app does not require a dedicated application backend or database.

AI implementation

The current AI Coach provides rule-based guidance and language lookups. Learners can optionally configure their own OpenAI API key for conversational feedback.

Open-weight AI integration is the next implementation step for this submission. Before presenting this project as an eligible open-source AI challenge entry, I will integrate and document an appropriate open-weight model or open-source AI framework as a core part of the learning experience.

I will update this section with the actual model or framework, how it is used, and how to reproduce the setup once that integration is implemented and tested.

Why Does Open Innovation Matter?

Language-learning tools should be accessible to people who cannot afford expensive subscriptions.

Open technologies offer several opportunities for this project:

  • Lower operating costs: Static hosting avoids the need to maintain an application server.
  • Privacy: Learning progress and settings stay in the browser by default.
  • Transparency: The public repository allows other developers to inspect and improve the implementation.
  • Flexibility: An open-weight model could enable more control over the feedback process, model selection, and deployment costs.

The important distinction is that browser-local storage and open-source AI solve different problems. Local storage supports data privacy, while an open model or framework can provide greater control over the AI capability itself.

My aim is to bring these benefits together in a practical study tool for Danish learners.

My Agent Session

I do not currently have a public DevRelay session to link here. This section can be updated if a session recording becomes available.

What's Next?

My priorities are to:

  • Integrate and test an open-weight AI model for useful Danish writing or grammar feedback.
  • Improve speaking practice and self-assessment.
  • Make revision recommendations more useful.
  • Continue improving the app based on learner feedback.

If you are preparing for PD2 or PD3, try the app and share your feedback.

Live app: https://ankurjha21.github.io/pd2coach/

Source code: https://github.com/ankurjha21/pd2coach/

Analytics: https://pd2coach-ankurjha21.goatcounter.com/

Thanks for reading!

— Ankur Jha

Top comments (0)