Write Away is a micro-journaling app that imposes a maximum character count as a low-commitment alternative to typical blogging services
Many people like the idea of keeping a journal, but find the actual act of writing consistently everyday to be a daunting or time-consuming endeavor that can be difficult to integrate with their other responsibilities. Write Away is a private micro-journal that enforces a maximum character limit to encourage a regular, but low-commitment approach to journaling.
- User authentication & demo login
- Posts
- Reminders
- Tags
- Photos
- Graphs
- User Authentication
- Journal entries are secured by user accounts.
- Posts
- Posts are limited to a maximum of 500 characters each and one post per day.
- Posts may be updated or deleted.
- User can filter their post history by: all posts on the same date, all posts on the same day of the month, etc.
- Reminders
- App will text user a reminder to post every day.
- User can reply to text reminder to submit a post.
- User can set custom reminder messages and times.
- Tags
- User can tag posts with keywords.
- User can filter their posts by tag.
- Photos
- User can optionally attach a single photo to each of their journal entries.
- Graphs
- Graphs will provide further information about user's journaling behavior, e.g., time of day, length of time spent writing, geolocation, emoji mood graph, etc.
- User can attach a short audio file to their journal entries.
- Speech-to-text transcription of audio files.
- Gamification elements: Github-style commit squares to motivate user to maintain posting streak; motivational messages.
Python/Django backend + PostgreSQL database + JavaScript/React/Redux frontend Possible Twilio API for text message reminders
- Setting up Django
- Learning how to use PostgreSQL with Django
- Understanding how to make models, controllers, and views in Django
- Connecting Django with React/Redux
- Using D3.js or Chart.js to make charts for the post data
- Integrating Twilio API for text message reminders
Rewel Garcia, David Harris, and Alexina Chong
- Set up Python3 and Django locally (ALL)
- Learn Python (ALL)
- Begin learning Django (ALL)
- Begin implementing user authentication (David & Rewel)
- Finalize proposal (Alexina)
- Work on first draft of wireframes (Alexina)
- Set up database (David & Rewel)
- Finish implementing user authentication (David & Rewel)
- Work on
posts
(ALL) - Make a model, view, and template for
posts
(David & Rewel)- Model:
message
,user_id
- Views: (David & Rewel)
- Index of posts
- Create post
- Update post
- Show post
- Delete post
- Templates: (Alexina)
- 'Create post' button should disappear if a post has already been created that day.
- User should be able to add entries for any missed days.
- Model:
- Work on homepage design (Alexina)
- Finish implementing
posts
- Work on
reminders
(ALL) - Make a model, view, and template for
reminders
(Rewel)- Model:
date
,time
,frequency
,message
- Views: (Rewel)
- Index of reminders
- Create reminder
- Update reminder
- Show reminder
- Delete reminder
- Templates: (Alexina)
- User may have multiple reminders with custom messages and frequencies.
- Implement recurring event date/time picker (similar to Google calendar reminders).
- Integrate Twilio API for text message reminders (Rewel)
- Model:
- Work on
tags
(ALL) - Make a model, view, and template for
tags
(ALL)- Model:
message
,post_id
,user_id
- Views: (ALL)
- Index of tags
- Create tag
- Update tag
- Show tag (all posts tagged with that tag)
- Delete tag
- Templates: (Alexina)
- A post may have many associated tags.
- A tag may be assigned to multiple posts.
- Tags are searchable. (Implement dynamic search.)
- Finalize overall site design (Alexina)
- Model:
- Work on
photos
(ALL) - Make a model, view, and template for
photos
(David)- Model:
photo_url
,post_id
,user_id
- Views: (David)
- Index of photos
- Create photo
- Show photo (modal)
- Delete photo
- Templates: (David & Alexina)
- Ability to attach a photo to a post.
- 'Upload photo' button should disappear if a photo has already been attached to that post.
- Model:
- Set up Cloudinary/AWS to store photos. (David)
- Work on graphs (ALL)
- Implement using D3.js or Chart.js. (David & Alexina)
- Graphs should show different aspects of journaling behavior, such as:
- Time of day
- Length of time spent writing
- Geolocation?
- Emoji mood graph
- Finish styling (ALL)
- Make demo user account
- Populate seed data