I attempted to build a website creation utility that allowed the users to control the web monetization of the content they would deliver. This would tie in to a web monetization wallet that they specified with no interaction from us as a host. Read below under the additional info to see why I think this project largely was a failure.
an open source platform for creators to share their work while getting monetized
Where creative works can generate money
The hope of this project is to allow users to create, manage, and host web sites that allow them to expose their talent in exchange for simple monetization.
How Web Monetization Works
The platform will extensively use the web monetization standard to allow for payments. The standard utilizes micro-payments which can be used to unlock content. More about web monetization can be found at the web monetization web page.
The project is a work in progress and as I create more documentation this page will be updated. For now the stack will be:
- MongoDB (accessed through Mongoose)
- Auth0 (for authentication)
I used this as a platform to start working with Vue. I created the front-end with Vue.js and was very happy with the choice. The syntax and component/view development of Vue work for me very well. I look forward to working on some other projects with this technology. The other aspects of the project were familiar to me using Node and Express.
Two of the largest technical challenges faced during development was how to upload and later reference content and how to generate a web server to host the websites.
The content was first being handled as data being uploaded to an Amazon S3 bucket. The SDK provided by Amazon was easy to get up and running. I later changed to having Sanity.Io handle the content for an easier reference division for each creator. This proved to be untenable because Sanity did not immediately present an API to handle video.
To set up the webserver, I looked into creating bash scripts to handle text changes to Nginx configuration files. This worked as expected and Node provided an easy way to handle the system interaction to run the scripts. I created a new configuration file for each site, which would make it easier to remove the websites if the creator ever wanted to remove their work.
This project was a failure. I am submitting this since I did drop some hours into it and there is a good framework to expand upon if I ever figure out some of the hurdles I ran into. I am using this as a post-mortem for this project.
The first thing that I failed on (and I think a lot of projects suffer from this) is scope. I scoped a very large project. One that would have been hard to accomplish with six months and tried to cram it into one. The biggest problem was not recognizing this until it was much too late. By the time I realized that generating a web site and allowing it to be edited was a large undertaking, it was only 1 week until the deadline. There was no way I could pivot or reduce the scope.
I attempted to preserve but my attitude became soured. It was hard to sit down and focus while already feeling defeated. This brings us to the second failure, cynicism. Feeling defeated already, I made it that much harder to move forward. You can sometimes be your own worst enemy.
I can sit here and make excuses for why I was unable to complete my intended project, but in reality, it came down to my own project management. Having a clearly defined plan would have paid off in the execution. I could have salvaged some part of this. I could have created a completed project rather than a broken, incoherent mess. I am fortunate to be able to look back on this and learn. Project management should entail a larger part of the task.
Thank you for reading. Look for a future update and, you never know, I may figure out some of the technical challenges I had and finish this.