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?

26 comments

  1. [10]
    cptcobalt
    Link
    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...

    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:

    • Build your system to make your content shine. Launch quickly and iterate on your systems so the content of your page isn't held back by it. Don't conform to the style of content that WordPress and Medium allow for the web—be your own creator, and define your own path. Make something magical. This may sound like hyperbole, but it's not—take the opportunity to make something special. This is why I built my tools.
    • RSS and JSON feeds. I got asks for both of these right off the bat because I launched without feeds, and I today I see traffic from both RSS and JSON that justify their implementation. (JSON took me ten minutes, RSS (specifically Atom 1.0) took me half a day.)
    • Extensive meta support—twitter cards, canonical links, stuff like that. Because my area of expertise is actually building internal tools at huge companies, I never previously had to care about this...so I was in for a huge deep dive with regard to SEO/etc. I still don't think I have it just right, but I have contextually appropriate page meta support on both articles and tag pages.
    • Do all this without using JS. (Mostly.) Because I only do server-side rendered HTML and precisely zero DOM manipulation, my page render times are pretty good, even though my site is pretty image heavy. (The only thing on my pages that require JS is the dang share buttons.)
    12 votes
    1. [3]
      cos
      Link Parent
      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...

      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.

      9 votes
      1. [2]
        cptcobalt
        (edited )
        Link Parent
        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 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).

        • Start off with sketches. I filled up a couple pages of my sketchbook with site layouts. Specifically experimenting with different page widths, grid organization, etc. I knew that my words had to be second to images, so I chose designs that emphasized images.
        • Make a "pixel perfect" mockup. Ostensibly, I'm not a pixel perfect designer—I cannot stop iterating and changing things. But here's a screenshot of my Sketch project, before I started building out the design. You can see this mockup feels a lot earlier in the process compared to what I actually built.
        • Write articles. The need for it is obvious enough, but I wrote articles before I started building the site. This way, I could play with real content, not mockup content, as I was building it out.
        • Build it, and iterate. What you see today when you visit the site is probably the 5-6th major update I've done, to add new features and polish existing CSS/etc. It's just responding to the needs of the content and site, as I've learned to work with it. And asking for (and listening to) a lot of feedback. It's not perfect, and for a one person project, it will never be. But it's okay enough for now, I think?

        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.

        4 votes
        1. sqew
          Link Parent
          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...

          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.

          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.

          2 votes
    2. [6]
      Somebody
      Link Parent
      What's your back-end look like? Mind sharing code?

      What's your back-end look like? Mind sharing code?

      1. [5]
        cptcobalt
        Link Parent
        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...

        What's your back-end look like?

        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".

        Mind sharing code?

        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!

        1. [4]
          Somebody
          Link Parent
          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...

          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.

          1. [3]
            cptcobalt
            Link Parent
            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...

            Your backend looks better than mine.

            That's okay! Take time to learn, and figure out how to iterate and improve! :)

            Have you looked at Summernote for a WYSIWYG?

            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.

            1. [2]
              Somebody
              Link Parent
              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...

              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.

              1. cptcobalt
                Link Parent
                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...

                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 WYSWYG rich 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.

                2 votes
  2. [13]
    mftrhu
    Link
    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.

    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.

    17 votes
    1. [11]
      cos
      Link Parent
      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...

      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.

      13 votes
      1. [10]
        Somebody
        Link Parent
        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...

        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.

        4 votes
        1. [2]
          ClearlyAlive
          Link Parent
          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.

          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.

          11 votes
          1. Somebody
            Link Parent
            Could have been, but that's not what the said. You do have a good point, though.

            Could have been, but that's not what the said.

            You do have a good point, though.

            1 vote
        2. Elronnd
          Link Parent
          Parent didn't say don't use javascript, nor did the grandparent. The blog should work without JS; if JS isn't supported then you just get a plain text box. And--use js, but don't overdo it. Use it...

          Parent didn't say don't use javascript, nor did the grandparent. The blog should work without JS; if JS isn't supported then you just get a plain text box. And--use js, but don't overdo it. Use it tastefully.

          8 votes
        3. [6]
          cos
          Link Parent
          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's a nice sentiment, but there are some things that simply cannot be done without Javascript these days.

          That's very true, but very few of those things have anything to do with blogging.

          Ever implement a WSIWYG without Javascript?

          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.

          Refusing to use Javascript will make you noncompetitive in the modern Internet economy.

          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.

          7 votes
          1. [5]
            Somebody
            Link Parent
            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...

            See Drew Devault's blog

            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.

            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.

            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.

            1 vote
            1. vili
              Link Parent
              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...

              Part of the reason I'm doing this is to keep my programming knowledge up to date ... I'm coding for PC users, and figure I'll let the mobile aspect of things take care of itself

              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.

              9 votes
            2. Greg
              Link Parent
              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...

              UI development for smartphones is really its own discipline of web development that I'm just not very interested in messing with.

              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.

              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.

              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.

              5 votes
            3. sqew
              Link Parent
              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...

              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.

              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.

              3 votes
            4. Grand0rbiter
              Link Parent
              It can be made to look more modern and sharp without losing Drew's blog essence. See those motherf*king website examples.

              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.

              It can be made to look more modern and sharp without losing Drew's blog essence. See those motherf*king website examples.

              3 votes
    2. Octofox
      Link Parent
      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...

      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.

      3 votes
  3. [3]
    nic
    Link
    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

    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

    7 votes
    1. [2]
      Octofox
      Link Parent
      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...

      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.

      1 vote
      1. nic
        (edited )
        Link Parent
        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,...

        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.

        1 vote