I still don't know what I want to name this web blog/CMS software I'm currently developing, or what to refer to it as quite yet. @ me on X, BlueSky or heck reply to a video on my (neglected) YouTube channel if you have any ideas! 😅
Features and Functions:
- Create Blog Posts
- Create "tweet" style posts
- Create Test or any other style of posts
- Edit/Delete Posts
- Categorize and Tag posts
- Create photo albums (Which makes its own style of blog post with a mini-gallery to show the photos)
- Full rich text editor on the backend for posts
- Upload single or multiple photos (including drag-n-drop)
- File manager to manage already uploaded photos
- Photo picker
- Gallery Light-box
- Image caching
- Image thumbnail-ifying on the fly
- GZIP encoding
- User profile
- Site customization including Title, logo, footer text, blog name, etc
- Site analytics with: sophisticated backend, traffic analysis/logging, user-flow-path, most frequently visited pages, User Agent Distribution charts, DB-IP Geo-location estimations based on IP address, total hits, average visit length, referring sites...(and more features being added)
- BlueSky post/delete integration (1 way integration right now - post to and delete that post from BlueSk - the visa-versa will be in a future update)
- Image watermarking on-the-fly
- Right click blocking on photos
- Secure user/session handling
- Site login/Forgot Password/Reset Password functionality
- Responsive design (I almost forgot to put that, because, isn't that the norm now!?)
I've built all of this website from the ground up, relying on as few external libraries, etc, as possible. Most of the outside code is JavaScript for GUI elements and functionality.
Some technical jargon:
The BlueSky code was largely written from scratch as its a new protocol for me and I had to figure it all out. Most of the other people online creating BlueSky integration use dependency managers like composer to build the code, and I do not use such dependency managers so I had to scrape everywhere I could to find code samples that would allow my integration to work without relying on a bloated library.
The text editor is a fully free/locally hosted version of the TinyMCE rich-text editor with many added features to boost the overall functionality for creating posts
The light-box code is a highly-adapted version of jQuery Magnific popup.
The gallery code on the Photography page is some code that I wrote from scratch after searching the internet endlessly for a suitable endless-scroll gallery that is also responsive and also handles cached images.
The wrap-up:
I've said it before and I'll say it again: I've long-used nickdodd.com as a place to refine my craft of website development and have been building my personal websites like this for over 20 years. I take pride in writing my code from scratch using just a text-editor and creating nearly every bit of UI and other graphics on the site.
The code I craft here usually lives on in my repertoire for years, if not decades, to come, so I always take as much time as I need to make it perfect, and for the first time ever I'm going to turn my website code into open-source software that anyone can use!
I'm not sure quite yet when I'll start the official open-source project, but for now the code is an absolute mess and there are many more features and functions I'm working on and adding still. The code as it is now, is around 4500 lines of code, and is contained within a very limited number of files as I build out the functionality (also my preferred way to code). Once the code is closer to feature complete for a 1.0 build I will start to modularize it into MVC-style code base, which will help make it easier for other people to create plugins/addons for and overall work on and that's when the Git will be born.
/* Happy Coding */