mvp implementation

This commit is contained in:
2026-03-26 14:01:10 -07:00
parent 0cde587220
commit ebcf404fde
33 changed files with 3048 additions and 6 deletions
+26 -6
View File
@@ -1,13 +1,33 @@
# officeconvert
officeconvert is a toolset to convert common office document types images using LibreOffice (`soffice`). This repository provides three classes of projects:
officeconvert is a multimodule conversion toolkit for turning presentation files into
typed `SlideDeck` artifacts with rendered slide images and notes. The repository is
organized around Protocol Buffer schemas with ConnectRPC code generation for both server
and client compatibility.
- Python library responsible for actual conversion work
- Connect gRPC Python server for easy microservice deployment
- Client libraries for assorted languages
## Modules
APIs are built on typed Protocol Buffer schemas with codegen for the server and clients based on the primary schema.
- `proto/` contains protobuf schemas and RPC definitions.
- `gen/python` and `gen/go` contain generated protocol and Connect code.
- `python/packages/officeconvert` is the core conversion library (PPTX -> PDF -> images + notes).
- `python/packages/server` is the ConnectRPC Python server with MinIO orchestration.
- `clients/go` is the first client library with layered orchestration helpers.
- `deploy/` contains production-ish and dev Docker Compose files.
## Supported Document Types
Currently, only PPTX and ODP documents are supported. At the time of writing, PDF and image conversion is planned, however, presentation documents can currently only be converted to a custom `SlideDeck` type that encodes slides as images and includes richly-formatted slide notes.
MVP currently supports **PPTX only** and produces a `SlideDeck` result containing:
- ordered slide image URLs
- plain-text notes per slide
## Quick Commands
Use the root `Makefile`:
- `make buf-lint` to lint protobufs
- `make buf-generate` to regenerate Go and Python types
- `make py-sync` to sync Python workspace dependencies with uv
- `make go-test` to run Go client tests
- `make compose-up` to run server + MinIO
- `make compose-up-dev` to run MinIO only