docs/Developers/ProjectGoals.md
# ShinyCMS Developer Documentation
## Project Goals
This rewrite of ShinyCMS started out as as an educational exercise, giving me an opportunity to build a Ruby on Rails application from scratch and largely by myself. As it's gone on, it's been nice to have time for proper testing (100% coverage!), regular refactoring, and all the other things I don't get to do enough of at work :)
The original, [Perl version of ShinyCMS](https://github.com/denny/ShinyCMS) was built to satisfy the varied requirements of a number of clients during 10 years of working as a freelance web developer, so it's not a small project. Even though I built the vast majority of it, I was still surprised at the length of the feature list when I tried to list it all out near the start of this project.
My intention is to re-implement all of those features in the Ruby version (with some improvements), as 'Phase 1' of this project - then move onto adding new features after that.
I am completely open to new features being written by other people; fork the code and go for it! I'd love to hear from you when you start, but it's not compulsory :)
If you want to get involved in implementation of one of the features that I'm already halfway through re-implementing, or one that's on the original feature list but not yet started in this version of the CMS, please have a quick chat with me first (and I'll probably say "Great, thanks!")
### Progress so far
See the [done](done.md) list for features from the original ShinyCMS that I have already implemented in this version - as well as a few new ones that snuck in along the way - with notes on improvements from the Perl version where applicable.
See 'to-do' column one on [the project board](https://github.com/denny/ShinyCMS-ruby/projects/1) for features from the original ShinyCMS that I haven't started implementing in this version yet. Column two has ideas for new features (that I'm trying to resist building until I've caught up with the Perl feature list). The third to-do column is plans for refactoring and other improvements that I hope to make to the code I've already written. Lots to do!
All my 'in progress' tasks are on the board too (column 5), usually with notes about how far I've got / what comes next / what I'm stuck on.
(There are still some to-do items in the old [TODO](TODO.md) document as well; I'll get them all transferred to the project board eventually!)