What
The project name should be decoupled from the GitHub project and Heroku app names.
Why
GitHub has naming constraints. Heroku has different naming constraints. Other source control or hosting tools may have other naming constraints. It doesn't make sense for them all to be tightly coupled. I should be able to have the project "Sleepy Polar Bear Website" with a GitHub repo "SleepyPolarBear" and a heroku URL of "sleepypolarbear2018.herokuapp.com". It makes no sense to restrict the user in this regard, and users would hate us for it if we keep it this way.
How
Where it previously asked for the project name (in both Tyr and Yggdrasil), that should be the Hammer-IO project name. After the user enters a name, the system transforms that name to fit the constraints for GitHub and Heroku and then asks the user to enter a GitHub project name and Heroku app name (with the transformed names pre-filled in the form fields).
Other Thoughts
Should we make the Hammer-IO project name unique? If so, is it unique across all users (like Heroku) or just unique within the creator/owner's projects? (Part of the problem here is that we allow multiple owners and complete transfer of a project to a different user.) Uniqueness across the entire app is easier, but it's really annoying when you're trying to make a project with a name someone else has already used. Using "username/projectname" as the unique key lets the project name be more flexible. If we do make it unique in some fashion, we could use the project name or username/projectname in the URI instead of the project id (which currently is gross to look at). That would make the URLs a lot prettier and better aligned to the paradigm used in similar applications.
What
The project name should be decoupled from the GitHub project and Heroku app names.
Why
GitHub has naming constraints. Heroku has different naming constraints. Other source control or hosting tools may have other naming constraints. It doesn't make sense for them all to be tightly coupled. I should be able to have the project "Sleepy Polar Bear Website" with a GitHub repo "SleepyPolarBear" and a heroku URL of "sleepypolarbear2018.herokuapp.com". It makes no sense to restrict the user in this regard, and users would hate us for it if we keep it this way.
How
Where it previously asked for the project name (in both Tyr and Yggdrasil), that should be the Hammer-IO project name. After the user enters a name, the system transforms that name to fit the constraints for GitHub and Heroku and then asks the user to enter a GitHub project name and Heroku app name (with the transformed names pre-filled in the form fields).
Other Thoughts
Should we make the Hammer-IO project name unique? If so, is it unique across all users (like Heroku) or just unique within the creator/owner's projects? (Part of the problem here is that we allow multiple owners and complete transfer of a project to a different user.) Uniqueness across the entire app is easier, but it's really annoying when you're trying to make a project with a name someone else has already used. Using "username/projectname" as the unique key lets the project name be more flexible. If we do make it unique in some fashion, we could use the project name or username/projectname in the URI instead of the project id (which currently is gross to look at). That would make the URLs a lot prettier and better aligned to the paradigm used in similar applications.