A web app that connects people, places and memories.
Mnemo is a web application that allows users to share memories by geotagging them to places. Memories are composed of short, "Tweet-like" text snippets that can be about anything that might have existed or happened, for a moment or for a while, anywhere. Memories uploaded by users are anonymised.
The app is being designed as mobile-first. Users can check existing memories by consulting their feed, which fetches memories associated with nearby locations. Users can also search for memories by using a map UI and by searching for specific places.
Developed as part of my Software Engineering Course at Coyotiv - School of Software Engineering, this application is split into two main applications: a backend developed with Node.js, Mongoose and MongoDB, with an API developed using Express.js; and a frontend application made with Vue.js, Nuxt and Axios. The app stack also includes development and production environments using Docker containers, integrated into CI/CD pipeline and deployed in Google Cloud. Automated testing uses Jest. Load balancing is managed using Traefik.
You can check the in-development frontend app wireframes here.
To get a local copy up and running follow these simple steps.
- Git
- Node.js
- Docker
- A code editor or IDE (Visual Studio Code recommended)
-
Clone the repository:
git clone https://github.com/mateusk/mnemo.git
-
Install NPM packages for
frontendandbackendapplications. From the project root folder:cd frontend npm installcd backend npm install -
With Docker Desktop running, install MongoDB in a Docker container, by executing in terminal:
docker pull mongo docker run --name mongodb -p 27017:27017 -d mongo
-
Start the local development environment in terminal by running:
docker compose -f docker-compose.yml -f docker-compose.debug.yml up
-
To add some dummy data to the app database, go to the following URLs using your browser:
-
The app should be running at: http://mnemo.localhost/. As this project is under development, frontend and backend apps are still really simple and missing a lot of functionality and integration, but they are being constantly improved.
While the app is running (using the docker compose up command as mentioned above), automated tests can be run in the backend app in a second terminal instance by executing the following from the project root:
docker compose run --rm backend npm run testAt the moment, only three backend API endpoint tests are implemented (for /api/users, /api/places and /api/memories endpoints).
This is an open source project, therefore anyone is invited to contribute. To do so:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Mateus Knelsen
Portfolio: https://mateus.works
- Special thanks to all Coyotiv - School of Software Engineering mentors: Armağan Amcalar, Stephen Ingram, Mihriban Minaz, Furkan İlgenci and Yusuf Yalim
- My wife and life partner Paloma Oliveira
