You are browsing as a guest. Sign up (or log in) to start making projects!

Veeerbs

  • 2 Devlogs
  • 15 Total hours

An app that finally lets us, foreigners, learn irregular verbs easily! (And vocabulary too, while we're at it.)

Open comments for this post

2h 32m 7s logged

I created the landing page for veeerbs, my website for learning irregular verbs

I started with the landing page to get a feel for what it would look like—I hate diving into a project by just dropping in unstyled HTML elements; it’s depressing.

Technologies

  • Angular as the web development framework—not ideal for a landing page, perhaps, but better suited for the rest of the site
  • TailwindCSS because I can’t live without it
  • Rough.js for the hand-drawn look of the shapes and borders
  • My Raspberry Pi Kubernetes homelab for hosting, of course
0
0
34
Open comments for this post

12h 32m 33s logged

I have fully developed an initial functional version of the API.

You can access the documentation here.

Description

Veeerbs is an application designed for reviewing irregular verbs and, eventually, vocabulary. In its current state, the API allows for the storage of a series of “cards” using JSON; each card consists of multiple “card_parts,” and each “card_part” comprises several “synonyms,” with each object possessing its own metadata (such as type or language). This enables dynamic, lightweight, and optimized storage of diverse data—covering both irregular verbs and vocabulary words—where each item can have multiple translations.
The API also supports the creation of lists composed of multiple “queries” used to select the cards to be included.
Authenticated users can then add these lists to their accounts to begin learning.
Once cards are added to their accounts, users can start practicing using the /user/cards/next-due and /user/cards/review endpoints.

Technologies

  • FSRS (Free Spaced Repetition System): a scientifically proven algorithm that enables extremely rapid learning by scheduling reviews just before the information is forgotten.
  • Python with FastAPI for the application core, and SwaggerUI for documentation.
  • Pydantic for data serialization (both input and output), along with the pydantic-settings extension to cleanly parse environment variables and/or local .env files.
  • SQLAlchemy as the ORM for interacting with the PostgreSQL database via psycopg2.
  • Structlog for versatile, structured logging—optimized for local readability and automatic JSON parsing in production environments. - Python-jose for JWT generation—used for both authentication and the questions asked—to avoid the need to store the questions themselves and to easily prevent replay attacks.
  • A centralized authentication system using Ory Kratos for the initial authentication layer.
  • Alembic for clean database migration management.
  • Builds produce Docker images that run on my Raspberry Pi Kubernetes infrastructure.

Notes

I took a long time to develop this API because I wanted to build it as cleanly as possible. Consequently, every object, request, response, and field is typed and documented. Logs are comprehensive and structured, and database migrations are handled correctly.

0
0
20

Followers

Loading…