A virtual multi-media scrapbook generator for treasured memories. Add images, songs, maps and more!
Afrah Ali, Ruwani De Alwis
- Supports user account creation and management
- Allows users to create new scrapbooks and create virtual collages to add to them
- Users can:
- Upload images
- Add image captions and other text
- Attach songs from Spotify
- Pin locations using Google Maps)
- Memoria stylizes user input to create and display their collage page
The first release of Memoria has been published to our Docker Hub registry. This is where all future releases will be published, in sync with the release branch of this repository.
- Deployment will be done using docker (a requirement to run the application)
- Navigate to the /app directory within the application
- Run
docker-compose build, this will generate an executable of the Go application - Run
docker-compose up -d postgres, this will start the postgres db in the background - Run
docker-compose up app migrate- this will start the go application at http://localhost:5000, along with a migration if needed
- Create an account and get started!
View the documentation of our Design System here.
- Client-side: HTML, CSS/SASS
- Server-side: Gin (Go)
- Database: Postgres
- Internal API: REST
- External APIs: Google Maps, Spotify
- the postgres DB has been versioned and migration files have been created and run through
go-migrate - To run a db migration on its own
docker-compose up migrate- this will read the migrations/ file in the folder and build a new version of the system (if changes have been present)
- As the migrations were not generated through GORM (typeORM used), a change to the model requires changes in both the appropriate files in the migrations/ folder and the structures in models/ folder
- Our DevOps pipeline is hosted on GitHub Actions where we build and test our code before integration. For release versions, we tag, build and publish Docker images of Memoria to our registry.
- Unit testing for CRUD and API handlers are done through our test suite and automatically run as part of our CI pipeline. Tests can be run manually with
go testfrom theapp/testdirectory.
- Data models for Memoria exist in the
app/modelsdirectory and are represented as go structs. This is where application entities can be extended for further feature development.
- User-to-model interaction is handled by the controllers in
app/controllers, which handle database CRUD operations as well as hit external API endpoints of Google Maps and Spotify for user requests. - Routes and handlers are defined in
controllers/routes.go, which can be extended to support new requests and connect to external APIs.
- Views are created with HTML5, CSS and Javascript in
app/viewsand are routed through handlers.

