Develop a JSON REST API service that performs image management functions. Images themselves are uploaded to an S3 bucket by the client directly, while supporting metadata are stored in MongoDB. All operations require Firebase Authentication ID token. Unauthorized requests immediately return 401/403 and is logged with WARN. Apart from extracting basic metadata such as width, height, aspect ratio, and MD5 hash, there is no image processing work.
Scope is REST API service, meaning there is no UI/frontend work apart from test scripts (Postman). This job requires you to be familiar with both Python and MongoDB. There is a bit of Amazon S3 usage in several operations but majority of the API operations do not use S3 at all.
Summary of operations:
• Reservation of S3 signed upload URLs
• Creating and modifying image metadata
• Moderation of images
• Image deletion
• Similarity check (using MD5 hash)
Metadata include: S3 object key, category, section, short description, long description, creation time, MIME type, width, height, aspect ratio, file size, crop coordinates, face coordinations, rotation
More detailed specifications will be provided to shortlisted candidates.
• Flask with Python 3.6 (I also consider Django, but please let me know your reasons)
• MongoDB 3.4 - this job uses basic MongoDB essentials (CRUD with straightforward queries, simple indexes), no aggregations or fancy features
• Amazon S3
• Firebase Authentication
• Each request should run fast (ideally a few milliseconds, unless there is heavy processing; this is one reason that I prefer Flask over Django, to reduce HTTP processing overhead)
• Logging with appropriate levels (using Python logging module)
• When applying to this job, please send at least 2 samples of your previous REST API works you're most proud of (doesn't have to be complete, just sample)
I am looking for a mix of experience and value