Back to portfolio

Molecular Bookkeeping for Structural Analysis

1 / 4

The project

Molecular Bookkeeping is a web application that helps chemistry students solve structural-analysis exercises interactively. Students can inspect NMR peak data and spectra, select and combine molecular fragments, link fragments to peaks, and validate whether their proposed molecule matches the teacher’s solution. Teachers can create or import exercises with spectra, peak data, and protected solutions. The product makes structural-analysis practice more visual, guided, and reusable for both students and teachers.

Merge. Match. Master.

The customer

The client of this project was Dr. Stefan van der Vorm, a university-level chemistry professor at Delft University of Technology and Leiden University. Among other courses, he teaches structure elucidation in organic chemistry, a discipline concerned with identifying the molecular structure of unknown compounds based on experimental data. He was extremely enthusiastic and always more than happy to provide us any chemistry explanations we needed, as well as abundant exercise data, showing his sincere dedication to the project.

The meetings were long, the list of misunderstandings was short.

The team

We’re team Bulochnaja. We are a well-balanced group, whose teammates have a wide range of skills, in the fields of software engineering and chemistry. Our biggest challenge was having to limit our scope and making sure we didn’t bite off more than we could chew.

Whether it was git branches or molecular fragments, the trick was making the merge not explode.

The technologies

Languages:

  • TypeScript: frontend of the application
  • Python: backend of the application

Important frameworks and libraries:

  • React: component-based UI framework for the frontend.
  • FastAPI: Python web framework powering the backend REST API.
  • SQLAlchemy: ORM for database access.
  • Ketcher & RDKit: chemistry-specific libraries for drawing and handling molecular structures.
  • Electron: packages the web app as a cross-platform desktop application.

Tooling:

  • Vite: frontend build tool and dev server.
  • ESLint: linting of TypeScript/React code (also used in CI).
  • Ruff: linting and formatting of Python code (also used in CI).
  • Vitest & pytest: automated testing for frontend and backend respectively (also used in CI).
  • Docker: containerization of backend and frontend services.

Deployment:

  • The application is distributed as a desktop installer (Windows, macOS, Linux) built with electron-builder and published via GitHub Releases. CI/CD is handled through GitHub Actions