Skip to content

Repository files navigation

Mnemo

A web app that connects people, places and memories.

GitHub contributors GitHub issues GitHub license GitHub forks GitHub stars

Table of contents

About The Project

Mnemo app wireframe example

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.

Wireframes

You can check the in-development frontend app wireframes here.

Built With

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/mateusk/mnemo.git
  2. Install NPM packages for frontend and backend applications. From the project root folder:

    cd frontend
    npm install
    cd backend
    npm install
  3. 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

Running the app

  1. Start the local development environment in terminal by running:

    docker compose -f docker-compose.yml -f docker-compose.debug.yml up
  2. To add some dummy data to the app database, go to the following URLs using your browser:

  3. 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.

Running backend tests

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 test

At the moment, only three backend API endpoint tests are implemented (for /api/users, /api/places and /api/memories endpoints).

Contributing

This is an open source project, therefore anyone is invited to contribute. To do so:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Mateus Knelsen

@mateusknelsen

hello@mateus.works

Portfolio: https://mateus.works

Acknowledgements

About

Repository of the Mnemo web app

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages