-
Notifications
You must be signed in to change notification settings - Fork 1
Milestone #1
M1 is a big jump into the project. There has been a lot of research into different templating technologies, MVC frameworks, database engines, etc. We wanted to get the right combination of technologies that are both scalable and actively supported by the open-source community. Here are the M1 checkpoints:
- Research and setup server technology
- Research and setup templating technology
- Research and setup DB engine
- Connect out application to the DB
- Implement adding/updating users
- Implement adding/updating movies
- Implement adding/removing movies from a users' movie collection
These checkpoint represent a good portion of our project and also a heavy time investment. Getting the project started and off the ground will be the biggest effort, especially as we learn new technologies. Once we become comfortable with the technologies, the project implementation should be pretty smooth.
As we mentioned earlier, we really want to use technologies that are widely and actively supported in addition to the technologies' ability to scale. After a good amount of research, tutorials and testing, this is what we have decided to use:
- Server technology = Flask (setup in an MVC style)
- Templating = Jinja2; it is fast, easy to learn, very popular and supported well
- DB engine = MongoDB; movies have similar attributes, and all movies have some unique attributes. MongoDB is the perfect DB engine for this project because it provides a non-relational schema that can be modified on the fly. MongoDB is very flexible, it performs well and it scales great!
- DB Connector = MongoEngine is a Python extension that makes accessing MongoDB from Flask really simple. MongoEngine takes care of the heavy lifting while we focus on building out our application.
- App functionality
- Users: we can create and update users for this application; being saved in the database.
- Movies: we can add and update movies in the database.
- Movie Collections: we can create movie collections for users, we can add movies to and take movies from the movie collections of users.