# Our Museum of Dreams
Attractive website displaying information about 60-70 films with analyses and ways of watching available. There should also be a blog and information about events.
The assumption is that this will be a full stack application, likely (preferably) with Django.
### Links
* Website with similar look and feel: https://www.ilcinemamuto.it/betatest/
* Website with similar functionality: http://www.colonialfilm.org.uk/faq
---
# Estimate of the work
Priority: 1 (low) to 5 (high)
## Breakdown by area
### Public-facing website
Appealing website hosting information about the films, with links to external platforms for viewing and possibly some which are hosted on-site.
The blog and events sections are included here on the basis of using a third party (no backend infrastructure on our part)
**Needs to be updateable after project end**
| Feature | Description | Days | Priority | Phase |Comments|
|-|-|-|-|-|-|
| Styling| Development of html templates and style sheets to produce an appealing, bespoke, and visually consistent look and feel across the website. | 10 | 4 | Pre-launch |Ideally the aesthetic will last for years to come; we want to avoid looking "dated"
| Front page aesthetics | E.g. carousel, making a good impression. | 3 | 4 | Pre-launch |
| UX | Designing the overall layout of the site, navigation, information architecture etc. | 2 | 5 | Pre-launch |
| *Blog* | System for editing, publishing, and displaying blog posts written by researchers. Potentially using 3rd party services like [Blogger API](https://developers.google.com/blogger/docs/3.0/using) or blogs.ucl.ac.uk | 4 | 5 | Pre-launch |re. third party: Might need a little bit of setup. Will help with SEO
| *Events* | System for creating events and displaying them on the site. Presumably this could be done via a 3rd party service like EventBrite, or using its [API](https://www.eventbrite.com/platform/api) to plug into a custom display | 4 | 4 | Pre-launch | This could be a bulletin board rolling upcoming events or a highlighted calendar etc.
| Map search | Add the option to display search results on a map with (optionally) dynamic filtering and display. | 10 | 2 | Pre-launch |Need to clarify use and complexity - could we just use eg. GoogleMaps API and mark locations
| Optimising for mobile layouts | Adding media queries to display the site on smaller devices (e.g. mobile) | 3 | 2 | Pre-launch | How much mobile optimisation should be taken into account? Many people use their phones to read articles etc.; this would help reach a wider audience
| Total || **36 days** | |
### Considerations and risks:
* How "designed" do they want the front-end to be? Generally modern looking with some nice pictures but based on a standard template, or something more bespoke?
* If we were to build our own infrastructure for the Blog/Events, they should be included in the back-end
___
### Backend and Internal-Facing Interface
| Feature | Description | Days | Priority | Phase | Comments |
|-------------------------|--------------|------|----------|-------------|----------|
| Data Model and Database Design | Modelling films' metadata properties and their relationships and interactions with entities such as cast, crew, organisations, themes, places, genres etc. Respond to changing requirements where necessary by updating the design in collaboration with the research team and migrate existing data. | 30 | 5 | Research |
|Media storage and hosting|Roughly 10 films will be hosted on the website, with the others being linked to. These ~10 films need to be stored somewhere. |3|5|Research| [vimeo](https://vimeo.com/upgrade)? mediacentral? Amazon S3? Linode? |
| Admin Interface | Forms, list and detail views to support data entry by the research team | 10 | 5 | Research | [Wagtail](https://wagtail.org/): Create film pages with templates? |
| Search | Advanced search capability enabling researchers and users to search and filter content by category, keywords, and content types. | 8 | 5 | Research | ElasticSearch? |
| Tagging | Add tagging system to enable researchers to flexibly create tags and apply them to a range of content types. | 2 | 4 | Research | django-taggit? |
| Search results download | Enable users to download summary information about a collection of films returned by a search query; e.g. "All films on the topic of the myth of Odysseus" | 5 | 3 | Pre-launch |
| Export to Research Data Repository | Export data and deposit in UCL Research Data Repository according to FAIR data principles. | 3 | 5 | Pre-launch |
| Teaching material | Ability to attach package of files to a film entry containing teaching material; e.g. synopsis, context, questions… and download as a zip file | 5 | 4 | Pre-launch |Likely done for each film and available from the film's page to download
| Total | | **54-66 days** |
### Considerations and risks:
* What metadata are we storing about films? Are we going the full [Metadata Standards for Cinematic Works](http://www.filmstandards.org) ?
* Related materials? Cast, crew, places, series, production companies, reviews, advertisments...?
* Is the website intended to be ported to a static version at the end of the project or is the intent to keep it live and updateable? (consider hosting costs for the latter. Also consider third party apps for events/blog for the former which would cut down on dev time)
___
## Deployment
| Feature | Description | Days | Priority | Phase | Comments |
|-------------------------|--------------|------|----------|-------------|----------|
| Deployment | Setting up hosting, networking, DNS, containerisation, configuration etc. | 5 | 5 | Research |
| Monitoring | Setup monitoring tools on the host server, and externally to collect metrics on server load and alert the maintainers in the event of any problems. | 1 | 3 | Maintenance | May be included with cloud@UCL |
| Broken links checker | Regularly scan pages and alert website owner if there's a broken link | 1 | 3 | Maintenance | May be provided by UCL webservices |
| Total | | **5 - 7 days** |
## Maintenance
From our docs (pending PR merge):
> Maintenance tasks should be **scheduled** as a fixed amount every X months (e.g., last Tuesday of each Month) for Y years, and costed accordingly. During these times we will apply all the required updates and security patches needed. A ballpark figure is 5-10% of total cost of the project to be costed for maintenance.
> This could be automated if the deployment has been planned as such, but it may still require human intervention. This may need some code changes if the updates affect the functionality.
> We should aim to keep it to the latest versions of dependencies, but if the work involved is considerable we may pin the latest working version. Having a CI run every month that tests the application with the development branch of the main dependencies may help to be ready for these changes before things break.
| Feature | Description | Days | Priority | Phase | Comments |
|-------------------------|--------------|------|----------|-------------|----------|
| Maintenance | Respond to issues and pro-actively apply updates and security patches as an when required to ensure the website remains available for five years beyond the end of the initial 3-year funding period. | 20 days @ 4 days / year | 5 | Maintenance | This would cover things like software updates, patches, and breakages. It does not cover new feature requests or tweaks to existing features
| Total | | **20 days** |
### Server and media storage costs
Research phase:
Small Cloud@UCL Virtual Machine (1 CPU, 4GB RAM, 50GB data) for 3 years = £563
Post-project phase:
Small Cloud@UCL Virtual Machine (1 CPU, 4GB RAM, 50GB data) for 5 years = £941
Media hosting:
250GB Linode objects storage with 1TB/download @ £5/month = 60 x 5 = £300
**Total** = £1804
### Considerations and risks:
* Given what happened with similar types of site, maintenance can be trickier when it comes to sites containing embedded video.
* Suggest we add something to scan external links and report if they're down
* Hosting costs for: database, webserver, and media
* API changes or withdrawal of services we depend on; e.g. services changing free tier
## Meetings and administration
We add roughly 10% to the above costings to account for time spent in meetings and other admin tasks.
## Total
| Task | Time estimate |
|-|-|
| Front end | 36 days |
| Backend and internal facing | 54-66 days |
| Deployment| 5-7 days |
| Maintenance| 20 days |
| Meetings and admin | 12 |
| Server costs | £1804 |
| **Total** | **127-141 days**|
Worktribe link: https://ucl-research.worktribe.com/record.jx?recordid=6915794