Masnaع is a file store service. It acts as a synchronisation backend service between user-facing clients (Frontend application, mobile app, product backend), and object storage services – like Amazon S3. To account for the diversity of file upload workflows, Masna3 does not perform the upload and downloads itself, but creates pre-signed URLs that allow clients to upload and download files. These URLs refer to particular object, serve one specific purpose (upload or download), and have an expiration time.
The point of this project is to provide a high-quality Haskell codebase that uses state-of-the-art practices for software architecture and documentation. The code must be as readable as possible for newcomers, and be usable as examples to display software engineering best practices.
This project condenses the knowledge that I have gotten from my years of industrial Haskell. This pattern of a separate file-handling service has emerged over several companies where I worked, and I find this a well-scoped project to do pair-programming.
See the docs directory for local development and architecture decisions.
See CONTRIBUTING.md for the requirements.