Requirements
User info (possibly multiple users, but I’m not sure if this is an individual’s blog site or a blog site for multiple people to sign up), which will have:
- ID
- Username
- Password
- First name
- Last name
- Email address?
(for recovering lost passwords maybe; I can’t think of anything else my super basic blog site would want it for)
- Social media links (Facebook, Twitter, etc.)
Profile page, displaying the user info and maybe previews of blog posts
Blog posts, which will have:
- ID
- User foreign ID (if there are going to be multiple users)
- Title
- Date posted (user cannot set this)
- Blog content
- Pictures?
Comments, which will have:
- ID
- Post foreign ID
- Commenter name
- I am not going to force people to sign up to leave a comment, so there will be no need to have any sort of Commenter class keeping track of commenters (at least in the foreseeable future). If a commenter leaves multiple comments, they will not necessarily be related to one another by the commenter. Each Comment is a standalone object.
- I am doing this mainly because people don't like being forced to sign up for stuff just to leave a comment. I'm sure that for now this will be a small enough thing that making people sign up won't be necessary.
- Comment post date
- Comment content
- Commenter email?
- Maybe I'd like to contact them directly about something they say, or at least confirm they are a person and not a bot.
- This will not be visible to the public, just required to leave a comment and then only available to me.
Plan
Set up folder structure and files.
Create a database with tables for all that stuff in the requirements.
Write tests, I guess. ):
Write the back-end Ruby that allows for updating the database.
Needed classes:
Needed methods and their associated classes (will keep adding to this as needed):
Write the front-end views where the blog is displayed, using Sinatra.
CSS
Learn Things!
I think I have an idea, but feel a little sketchy on:
I have no idea how to:
Bonus Features
These things may or may not be out of the scope of this project. (They are probably out of the scope, I'm guessing.)
- Multiple users
- Customizable themes, like Wordpress and Tumblr have
- Users befriending and following other users, but that would be many:many and therefore craziness