An online tool to keep track of your rank and all the merit badges you've been working on and have completed.
I was inspired by the recent inclusion of young women into what used to be call the Boy Scouts but is now called Scouts BSA. Scouting was played a major role in my adolescent development, and I was always saddened that it wasn't availible to everyone. This project is dedicated to all children, everywhere.
- Client site: https://zzyyfff.github.io/scouting-advancement-tracker-client/
- Client repo: https://github.com/zzyyfff/scouting-advancement-tracker-client
- Server site: https://obscure-atoll-84260.herokuapp.com/users
- Server repo: https://github.com/zzyyfff/scouting-advancement-tracker-server
- Ruby
- Rails
- PostgreSQL
Interested in playing with the code or contributing? Read on.
- You will likely want to set up the Scouting Advancement Tracker Client. See further installation instructions on its repo: https://github.com/zzyyfff/scouting-advancement-tracker-client
- Any text editor will do. I use Atom, which makes development easier.
- Fork and clone the respository locally
- Install dependencies with
bundle install
. git add
andgit commit
your changes.- Create a
.env
for sensitive settings (touch .env
). - Generate new
development
andtest
secrets (bundle exec rails secret
). - Store them in
.env
with keysSECRET_KEY_BASE_<DEVELOPMENT|TEST>
respectively. - In order to make requests to your the API, you will need to set
SECRET_KEY_BASE
in the environment of the production API (for example, usingheroku config:set
or the Heroku dashboard). - In order to make requests from your deployed client application, you will
need to set
CLIENT_ORIGIN
in the environment of the production API (for example,heroku config:set CLIENT_ORIGIN=https://<github-username>.github.io
). See more about deploying to heroku rails-heroku-setup-guide
- bin/rails db:drop (if it already exists)
- bin/rails db:create
- bin/rails db:migrate
Note: Remember to follow the same commands when setting up your deployed database!
- Make sure you have a working Heroku account and the heroku command line tools and are logged in to Heroku.
- Merge down to your
master
branch - If it has not been run before, run
heroku create
once. Skip this step for subsequent deployments! git push heroku master
heroku run rails db:migrate
heroku config:set SECRET_KEY_BASE=$(rails secret)
heroku config:set SECRET_TOKEN=$(rails secret)
heroku config:set CLIENT_ORIGIN=https://yourgithubname.github.io
heroku restart
This project is born out of the Software Engineering Immersive course at General Assembly Boston (formerly the WDI, Web Development Immersive) and is the server side of my first full-stack project.
- Consider and brainstorm on the mission and goals of the project, based on the project requirements.
- Perform user research; talking to potential users about what they would look for in a scouting advancement tracker and what they would need or want from it.
- List out the functionality of an MVP and separately bucket future functionality that would not be part of the MVP.
- Draw up wireframes and settle on an initial interface design goal. The final interface will change through user testing and redesign.
- Create user stories
- Prioritize user stories, putting the ones with the most dependents first
- Create an ERD (See ERD below)
- Implement a back-end API with Ruby/Rails/PostgreSQL
- Create the basic layout of UI elements in HTML/CSS/SASS/Bootstrap/Handlebars, using semantic tags when possible and only enough styling to meet MVP layout needs.
- Connnect front-end elements to the back-end API.
- Test, troubleshoot, debug, refactor, and confirm working deployment.
- If there is enough time, begin work on stretch goal features and test them in deployment
- Fill in README.md
- Once all base functionality is established, apply aesthetic style
tables: users, merit_badges
users columns: id, email, password
merit_badges columns: id, name, completed, notes, user_id
Verb | URI Pattern | Controller#Action |
---|---|---|
POST | /sign-up |
users#signup |
POST | /sign-in |
users#signin |
DELETE | /sign-out |
users#signout |
PATCH | /change-password |
users#changepw |
PATCH | /change-rank |
users#changerank |
PATCH | /change-name |
users#changename |
GET | /merit_badges |
merit_badges#index |
GET | /merit_badges/:id |
merit_badges#show |
POST | /merit_badges |
merit_badges#create |
DELETE | /merit_badges/:id |
merit_badges#destroy |
PATCH | /merit_badges/:id |
merit_badges#update |
All data returned from API actions is formatted as JSON.
When a functional element doesn't work as exepcted, my strategy is to break down the element into smaller parts, testing to make sure each is functioning as expected. In Ruby, this might involve using puts
, binding.pry
, and confirming functionality via a curl script. In all situations, I carefully follow the logical sequence of events and make sure I understand what is going on.
When I've exhausted my own ability to debug a situation, I begin formulating how I would communicate this problem to others. I search online for similar issues and educate myself about the technologies and surrounding issues.
Finally, if an answer hasn't been found, I create a showcase of the problem, including example code, the steps to reproduce the problem, and what I've attempted so far, and I use this to ask for help from colleagues and the community of programers.
- Ideally, users should not be able to add a merit badge that they already own.
- Include merit badge requirements that can individually be met.
- Include rank advancemnt requirements.
- Allow scouts to join a troop and interact with each other.
- Integrated messaging between users
- All content is licensed under a CCBYNCSA 4.0 license.
- All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact [email protected].
Special thanks to Dr. Edward Marcus, Jennifer Meade, Erica Salling, Ben Jenkins, Toni Langley, Jordan Allain, Caleb Pearce, Naida Rosenberger, GA WDI-30, and everyone at General Assembly Boston.