A web app was built using Rust, the Axum framework, Postgresql database, and the NASA Image API. The app allows a registered user to search for images by keyword from NASA. By default the NASA API returns the top 100 matching results and didn't require a developer key. Thumbnails of the 100 images are displayed. The image description is truncated into a single line and displayed below each thumbnail -- hovering will display the full description.
There is a link above each thumnail that pops up the image in full size. Clicking on the image or checkbox selects it. After selecting the desired images, the user can click on the "Stitch Selected Images" button where the web app will combine them into a single (simple) image. The web app utilizes the Sitchy Core Library. Each "stitched" image is saved to the Postgresql database under each user's profile. Clicking on "Display Saved Stitches" shows all the users images and a button to delete any if desired.
If an administrator is signed on (using account admin@admin.com), an additional link to "Manage Users" is available. This will display all users (without admin permissions) and a checkbox to ban them as needed. A banned user attempting to login will be prevented and presented a warning that their account has been banned.
- How it worked, what didn't work? Almost all the necessary project objectives worked.
- user accounts use passwords and authentication during login (handled via JWT tokens)
- user and administrator roles where administrators can "ban" a user account
- users can save (and delete) their merged images (stored in Postgresql database)
- a cache of NASA API results, storing the following in the database:
- keyword used to search
- full URL used to query NASA Image Library API
- the entire json response returned from the API
- publishing project to Hetzer cloud servers using Docker images (http://5.78.104.199)