An exercise to put to practice software development teamwork, subsystem communication, containers, deployment, and CI/CD pipelines. See instructions for details.
"Time Capsule Planner" is a web platform for sending time-locked letters and to-do lists to one's future self, fostering goal-setting, self-reflection, and personal growth.
- As a user, I want to create and manage an account, so that I can have a personalized and secure space for my letters and to-do lists.
- As a user, I want the option to share my achieved goals on public community, so that I can share my progress and successes with others.
- As a user, I want to have some default options for time length, so that I can only click on the options to set time length to save time.
- As a user, I want to customize the timelength to lock the letter, so that it will be more flexible for me to plan.
- As a user, I want to save my plan as scratch, so that I can edit it before I confirm it's complete.
- As a user, I want my letters and to-do lists to remain securely locked until the set time after I complete them, so that I can enjoy the surprise and authenticity of my past thoughts and goals.
- As a user, I want to be notified when my time-locked content is available, so that I can revisit my past goals and reflections on time.
User Story: As a user, I want to create my plan and choose a lock-time for it. Click here or the diagram below to view it on figma.
Below is a picture of the wireframe diagrams of every screen in our app. Click here or the picture to view it on figma.
https://hub.docker.com/repository/docker/projectfive/app/general
https://hub.docker.com/repository/docker/projectfive/notifier/general
The latest images from main
are tagged with latest
.
The latest images from all other branch_name
are tagged with latest.branch_name
.
All images are also tagged with a UNIX timestamp and the commit hash which triggered the build.
Michael Lin mal9608@nyu.edu
Erick Cho ec3566@nyu.edu
Juliann Zhou kyz224@nyu.edu
Fuzhen Li fl2097@nyu.edu
You can access this project on the Internet from here.
By default, this project runs on port 80. It is advised that you switch to a deployment-ready WSGI server, and optionally, use your own SSL certificates served by an NGINX reverse proxy.
Docker is required to launch the project directly.
To setup the project locally, download compose.yaml
make a directory called mongodb-data
, and populate a .env
with the following values:
MONGO_USERNAME
: Anything you want.
MONGO_PASSWORD
: Prefer a long random string.
DEBUG
: Should be set to False
unless you're developing.
FLASK_SECRET_KEY
: Use the following one-liner in Python to generate a 32 byte base64-encoded secret:
import secrets, base64; print(base64.b64encode(secrets.token_bytes(32)).decode())
To launch on localhost:80, run docker compose --env-file=".env" up -d
.
To stop the project (and delete all containers), run docker compose down
.
To update the project to new images, run docker compose pull
.
To nuke the database (e.g. you forgot a password, or want a clean state): rm -rf mongodb-data && mkdir mongodb-data