I’m partway through my Rails Portfolio Project and even though I feel I have a decent grasp of Rails, I keep stalling out. Every time I sit down to work on my project, I spend more time trying to figure out my next steps than I do actually working on my project. So, today, I am going to attempt to define my own roadmap to follow. Buckle up.
Leg 1: Ideation (Thinking and Talking)
- What is the app?
- What are the main and secondary objectives of the app?
- What will you call the app?
Leg 2: Definition (Writing and Mapping)
- What models will you need?
- How are your models associated? Draw a diagram.
- What other data points will your models capture?
- Which data points will be required and which will require specific formats?
- Which RESTful routes will you need?
- Will you have multiple user roles?
- What features do you want to include?
- Research gems that you might use for testing, user roles, features, etc. to find out if there are any specifics to be mindful of as you set-up your models (i.e. using Devise to support user authentication will set-up your user migration, so you should to install it and then add any custom attributes rather than creating your own user migration)
- If there is anything you are uncomfortable with or not sure how to accomplish, write down your questions, do some research, and make notes of sites you find helpful.
Leg 3: Set-up (Laying the Foundation)
- Generate your app
rails new [name of app]
- Create your GitHub repo and connect your app
- Install any gems you will use (especially for testing) and run bundle install
- Don’t forget to add, commit, and push your work to GitHub
- Generate a resource for each of your models to get a model file, a controller file, a migration file, and the resource added to your routes.rb
- Review, finalize, then run your migrations.
**Leg 4: Seeding/Writing Tests (Preparing to Build) **
- Stub out all of the tests you want to write
- Write tests for your models (tests should include that the model is valid, validations are happening, and associations are correct)
- Write tests for partials or helpers (like signing in, signing up, headers, footers, etc.)
- Write tests for features/controllers/views
Leg 5: Building (Writing Code)
- Write model associations
- Write model validations
- Write any model specific methods
- Run model tests > debug > repeat
- Set-up controller actions and view pages
- Put in basic headers for each view page and make sure they are all working
- Begin building out controller actions and views starting with lesser associated models and working through to more core models
- Add any helper methods you need
- Run feature tests > debug > repeat
- Review controller actions against routes and make sure you are not allowing any routes that you don’t have actions for in your controller
Leg 6: Adding Features (Bells and Whistles)
- Once the core of your app is completed and working, identify other features you wanted to incorporate (for me this might include image uploading, geolocation, having users confirm emails, etc.)
- Review any documentation you found in your initial research
- Install any gems you may need
- Write any additional feature tests you may need
- Generate migrations for any additional data types
- Write the code for your features
- Run feature tests > debug > repeat
Leg 7: Design (Beautification)
- Think about the look and feel for your app
- Sketch out the look
- Identify colors and fonts you will use
- Create your CSS file
- Define your font and global styles
- Style partials (headers, footers, forms, etc.)
- Style specific elements
- Add any responsive styling
Leg 8: Finalizing (Dotting the i’s)
- Look over your code, is it DRY?
- Review routes, have you locked down any routes that you don’t utilize?
- Review files, are there any that you don’t need?
- Rerun all tests > debug > repeat
Leg 9: User Testing (Final Check)
- Walk through your app yourself on a couple different browsers
- Do instructions and forms make sense?
- Try entering in some incorrect info or leaving required fields blank
- Are there appropriate error messages when needed?
- Have a friend walk through your app. Watch them, see where they seem confused or stuck. Ask for their feedback.
Leg 10: Requirements Specific to This Project (Passing)
- Make sure you’ve recorded the 30 minute coding video
- Write a blog post on your project
- Record the 30 min walkthrough
- Write the README.md
- Add and check off the spec.md file
- Fill out this form
- Submit all your links
Update
I’m now nearly done with my project (fingers crossed!). I’ve now been working on this project for a month and a half!!! It is significantly scaled down. The fact that it has taken me so long and is no where near what I was hoping it would be makes me feel like I have failed. I started out wanting to build a small business directory that was fully searchable, had geolocation, images for all businesses and products, a full test suite, and some beautiful CSS. But, it’s been a struggle. Trying to write tests first caused me significant delays. I was uncomfortable with them and would just stare at my screen every time I tried to write them. Scrapped. I decided to add the images, geolocation, and CSS last, but now that it’s taken me so long, I just want to finish as soon as I can. Scrapped. Scrapped. Scrapped. The search is TBD. I am set on turning this project in within the next three days and the search is only partially working, so that may go too. I will be glad to move on. I may add more later, but probably not. It is so far from the vision that it doesn’t feel worth it. I guess that is learning though. Sometimes you can’t do it all and that has to be okay. Next time will be better.