13
votes
What are the minimal features every good blog should have?
I've been learning Laravel, and familiarizing myself with the framework by coding up a blogging website. Right now, it's minimally functional, and I'd like to add some more features to it. Since this is my first project with Laravel the code is a mess, and it's just about time for me to rewrite the whole thing. Before starting that, I'd like to have a better idea of what my final product should be. I don't want to recreate WordPress in Laravel, but I do want to have something I wouldn't spit at. Basically a project that would be good as a resume builder if I ever needed one.
So far, my website allows users to...
- register for an account, log in/out, update their email address and display name
- create posts with a WISIWYG editor
- upload files
- create profiles
- and manipulate everything through CRUD.
What do you think the minimal features a blogging platform needs to have to be "complete" and usable as a stand-alone system?
I've just gone through the same exercise as you about 2 months ago when I was building my games blog, The Missing Quests. Because I just went through this myself, I'll share with you my big learns here:
Holy crap, your blog is beautiful, and the content is amazing! You just earned yourself a new RSS subscriber. I'd love it if you could do a post explaining your design process and going through the source code line-by-line.
I most often explain myself to others as a designer that accidentally knows how to code. I can talk a bit about my design process, but you don't want to listen to me talk about how I code (nor do I intend to open up the source, sorry).
With regard to my programming, I feel pretty okay about it, but friends judge me a lot for my engineering practices. For example, I don't use OOP—I have tried to pick it up several times, can explain concepts from it, but it just does not mesh with my brain. To me, engineering feels like assembling a bunch of legos together—why go insanely complex if a well-considered, simple solution works just as well. It's not that I reject the latest and greatest—this site runs (and uses new features from) PHP 7.3—but I'm only one person trying to make something cool. I have to be pragmatic and build things for the way my mind works, and that, thus far, seems to be different from everybody else. Judge me as much as you want for saying that.
I think that your attitude about programming is completely valid. You describe yourself as "a designer that accidentally knows how to code," and the meaning that I personally extract from that is that you're a person whose view is more along the lines of "programming is a tool to get the results I'm looking for in insert field here." If you don't need to use the object-oriented features of whatever language you're using or go along with some massive complexity jump in order to get the results you want, that's 100% ok in my book, and, to my knowledge, plenty of other programmers feel the same way.
What's your back-end look like? Mind sharing code?
It is completely unfinished, but thus far, generally like this. It's still the early days of the editor—the site was built before the back-end was, and I still have to do SQL queries to get some content posted in the CMS. Admin UI is built with vue.js and PHP. I'm probably at least a month out before I can write and live in the editor "full time".
Sorry, I'm not up for sharing. (Plus, nobody wants my code. Trust me.) There's plenty of other things out there to learn from, though!
Your backend looks better than mine. >.< It'd be worth it to see how you put it together, for me.
Have you looked at Summernote for a WYSIWYG? I've had a good experience with it in a development environment, and it appears to deliver what it promises.
That's okay! Take time to learn, and figure out how to iterate and improve! :)
I'm a markdown apologist, and my content editor is turning out to be a system of assembling structured blocks of markdown+other content, so, no WYSIWYG. The end goal is to have pre-styled drag and drop blocks, that have wells for images, pull quotes, markdown text, etc...but I'm months off from an implementation of that. Short term, I plan to implement an auto-refresh preview that I can have side by side while writing.
You should revisit using an out-of-the-box WYSIWYG. It sounds like you're planning on putting a lot of effort into reinventing the concept. From my experience, users want something like Microsoft Word that they can use to create a web page. A quick WYSIWYG plugin will give them all of that.
You are 100% right, most users prefer that. I am, however, not that person, and I'm building this for myself. I'm choosing to design a system that makes rich content shine. I'm not designing something that'll make Wordpress or Medium users happy—there's enough of that on the internet as it is. I'll probably revisit
WYSWYGrich text editing later, but I consider a rich text editor to be inherently limiting for the content I intend to produce.For example, I already have content block types in my system which connect to the itch.io API, which sync and cache pricing information for games on the fly—this will never be possible with a content system which primarily subsists in a rich text editor. In the future, I'm also planning more structural blocks which will allow me to drop together varying layouts to get content to feel stylistically much closer to a magazine than a blog with one single column brick of text.
It basically comes down to varying goals.
Feeds, possibly containing the full content of the post. Archive pages - all posts, by year, by category, by tag. Feeds for those might be nice-to-have. It should be usable without Javascript.
This is quite possibly the most critical feature of any blog right here. A blog, of all things, has no reason to be Turing complete. There is no world in which your blog should require megabytes upon megabytes of superfluous code just to display some text. As a reader, I'm there to read; I'm not there to sit around waiting for some fancy animations to load and eat all of my bandwidth.
Put your content first, and get out of the way. Let it speak for itself.
That's a nice sentiment, but there are some things that simply cannot be done without Javascript these days.
Ever implement a WSIWYG without Javascript?
Refusing to use Javascript will make you noncompetitive in the modern Internet economy.
I think the top user meant for the main page. Of course, on the admin dashboard you will need JS to implement an editor, but there is no need for a reader to require JS to be able to read the blog.
Could have been, but that's not what the said.
You do have a good point, though.
That's very true, but very few of those things have anything to do with blogging.
Nope, and I wouldn't want to try. JavaScript, or any other proper programming language, is far better suited for that task than HTML and CSS. I'd definitely prefer writing a native application over a web application, though.
In the context of a blog? Hell no. In fact, I'd argue that the opposite is true. Of the blogs I follow, the ones I read the most are the ones that, first and foremost, have the best content and, second to that, load and display quickly and beautifully on my smartphone.
See Drew Devault's blog, the one I read most often, for reference. Notice the minimal use of JavaScript and the impressive quality of the blog itself.
That's a nice design, but I'm going for something more modern. His design just looks old, like it's from the web 1.0 days. Part of the reason I'm doing this is to keep my programming knowledge up to date, and an overly simplistic design wouldn't serve that purpose.
That's a specific use-case, pretty specialized, and I really wish people wouldn't think of smartphones as a good way to surf. The browsers suck, and very often either aren't up to the latest standards, or doing some off-the-wall proprietary thing.
UI development for smartphones is really its own discipline of web development that I'm just not very interested in messing with. I'm coding for PC users, and figure I'll let the mobile aspect of things take care of itself by using Bootstrap for the CSS. Bootstrap will automagically get things laid out for mobile browsers without needing to drag the programmer into a lot of crap.
I feel that these two sentences contradict each other. Unless you know for certain that your only user group is desktop users, the kind of responsive design where mobile is an afterthought is a badly outdated design paradigm. I would definitely recommend looking into a modern mobile first type approach where the foundation of the design is usable on any screen size, and you build on top of that when serving content to users with larger screens. Just keep in mind that mobile first is not mobile only.
When done correctly, this speeds up loading times for mobile users, saves bandwidth, and should also help your discoverability as Google is moving towards purely mobile first indexing.
In the sense that UI design is separate from programming, you're right. It sounds like you are planning to take on the UI work yourself anyway, though, so that means you need to consider the mobile experience - it's almost certainly going to account for the majority of views on any modern platform. General browsing skews towards majority mobile and has done for a few years now.
You've said a few things in this thread that concern me, and this concerns me the most. Again, coding and design are very different disciplines and it'll help your own process to think of them as such; maybe you're fortunate enough to be skilled at both, and I know that realistically nobody's going to hire a separate designer for a small personal project, but it'll still make life a lot easier to approach them as distinct tasks and understand how they interact.
More importantly, the idea that Bootstrap will figure out the mobile interface automatically is optimistic in the extreme - it's a great tool, and one I use myself on most projects, but it isn't magic. It can keep things from falling off the screen, it can even guide you towards good practice, but it can't ensure that hierarchies and layouts still make sense. It can't ensure that the key elements are where the user expects them to be. It can't ensure that the vertical scroll isn't too long in portrait orientation, or that the key content remains "above the fold". It also barely even touches on cursor vs touch interface, which (along with screen size) is the other key aspect of mobile design.
Sketch your key screens and the flows between them on paper - do so in a tall, narrow portrait orientation as well as in a desktop style landscape orientation, and ideally a mid-size tablet as well. See what shifts naturally and what needs to be tweaked, and then build to the design you've thought through. Don't let the code drive the design, and certainly don't let the platform the majority of your users will be on be relegated to second place.
So I totally understand that you're trying to go for something reasonably complex to implement to keep your skills sharp, but I really want to jump in on this specific point. I actually love blogs like Drew's precisely because they're so minimal ("web 1.0", as you say). There's absolutely nothing to distract from the text, and navigation is a breeze.
It can be made to look more modern and sharp without losing Drew's blog essence. See those motherf*king website examples.
The general rule I go by is if its an actual document, something you can imagine loading in word or a pdf viewer then it should need no JS at all to run, if its an actual application like you would have installed then its fine to require JS for the function of the website even if its possible to make it in a hack way with just forms. There is kind of a middle ground when it comes to tildes and wikipedia where its mostly a document but has minor improvements that can be made with JS and I think thats fine as well.
The most important thing, for any blog, is good content.
Analytics
Ability to add in Ads in case the blog takes off and needs to be subsidized
Contact form with spam protection
Not essential for every blog though. For the average blogger analytics is worthless because you are not basing business choices on those stats to try and drive up page views, you are just putting out content you feel worth while. I used to have analytics before realising its just a weird obsession checking stats that don't mean anything to me.
Personally I find the entire advertising industry unethical so I refuse to put adverts in. I looked in to some of the better ones like carbon ads and realised that every single ad network requires you to add 3rd party JS in that tracks users because they have to be able to detect bot clicks so I opted to have no adverts.
As for contact I just put my email address on the website and let my spam filter deal with anything, not sure if anyone has even sent spam but none of it has hit my inbox.
If you get a huge spike of visitors, it's interesting to know when and from where. That is how I discovered Digg over ten years ago. Plus it also lets you learn how many folks use mobile vs web, chrome vs ie etc...
I used Google analytics and Google Adsense. Users do get tracked. Not sure what advantage the advertisers can gain from tracking users on my site, other than my users are obviously of refined tastes.
I have to try this.