Skip to content

✍️a tool for daily object writing with timer and sms reminders when time to write

Notifications You must be signed in to change notification settings

loudmouse/writing_prompt

Repository files navigation

This is DailyPrompt

DailyPrompt empowers a user to practice object writing on a daily basis.

Write something today at DailyPrompt

What is object writing?

Object writing is a daily exercise where you write about an object for 5 minutes. It's often used for songwriting and is a great way for creating a daily writing habit. You'll write about a single word/object in a free flow manner using your 5 senses - sight, touch, taste, smell, and sound. When the timer goes off you're done until the next day's daily writing prompt.

Features

  • daily word generated from a word bank
  • definitions from a 3rd party API
  • a writing timer
  • daily SMS reminders to write

The Tech

DailyPrompt is built with Ruby on Rails, Postgres, Wordnik, Twilio, and is hosted with Heroku.

Done

  • add a timer
  • get timer to start with click of a button
  • show word from api
  • show definition
  • migration to add publish_date column to word model
  • increase Word.count to 365 (1/day)
  • give each word a publish_date
  • create a scope to access 'word of the day'
  • display definition on show
  • create list of 365 quality words
  • create rake task to instantiate word instances from a list of words in a csv file, and then persist these to the database.
  • delete old words
  • delete old prompts
  • add new words
  • add publish date to new words
  • update gemfile to use postgres for production db
  • deploy to heroku
  • migrate database
  • run rake task on heroku to import 365 words from csv and instantiate as words on production db
  • update the publish_date of each word on production db
  • update wordnik api key in ENV for deployment to heroku
  • updated heroku timezone so the word of the day changes according to local (chicago) time
  • update create account / login links
  • fixed bug where new prompt timer wouldn't start unless page was refreshed first. Related to the JS/Turbolinks not loading, see: https://stackoverflow.com/questions/17317816/rails-javascript-only-works-after-reload
  • moved timer into a partial
  • created singular resource for users#show to create a profile route
  • setup edit/update actions in the prompt controller
  • add edit button on prompt show page
  • setup a destroy action in the prompt controller - only allow prompt owner to delete
  • add delete button to the prompt show view - only allow prompt owner to view this button
  • style sign up / log in / edit
  • move word_count logic from controller into a method in the prompt model
  • use helper methods for the ivars currently in my controller
  • create a private method with a before_action in the prompt controller to prevent a user from editing/updating another user's prompt
  • add bootstrap .container to views for responsive width
  • add stats to user dashboard
  • total words written
  • make posted by text list username instead of email
  • redirect user to his/her prompt after creation
  • add field for username, city, and bio to sign up and edit forms
  • validate username at signup
  • add validation to bio to keep it at 200 characters max
  • add validation to ensure usernames are all unique
  • setup a tabbed form so user can write on the word of the day or a 'freewrite'
  • setup a user dashboard
  • display new prompt button on user's dashboard if they've not written today
  • display list of prompts on a user's home page
  • notify user via sms when it's time to write (using twilio)
  • stats: total prompts, total users, latest user to write prompt, total words written by all users

Todo

  • maybe use charts.js to display above stats on user dashboard
  • FAQ's page
  • show word type
  • show word usage
  • show synonyms
  • related image
  • add brown noise audio option
  • timer alert in styled modal
  • how could natural language processing be used? Analysis of part of speech? Sentiment of a prompt? http://www.thagomizer.com/blog/2017/04/13/the-google-nlp-api-meets-ruby.html
  • use musixmatch api to allow user to select a few of his/her favorite artists and save to account. Then display song lyrics from a song of a favorite artist each day across the header of the site.
  • make validation errors look nicer on the eyes
  • setup recurring sms reminders. maybe like this: http://nithinbekal.com/posts/rails-recurring-events/

About

✍️a tool for daily object writing with timer and sms reminders when time to write

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published