Dropplets - A simple database-less CMS

  • Looking over the comments I want to say I am surprised the attitude of some people towards this project, but given this is Hacker "Hate On PHP" News, I am not. I am disappointed to see people nitpicking over the way some things have been coded. As someone who's used Dropplets on a couple of small sites now, I've found it to be a breath of fresh air compared to Wordpress.

    Not only is Dropplets a lot more simple to work with compared to other CMS's/blogging platforms written in PHP, it works. It's easy to write themes for it, it's easy to publish content and easy to make it do whatever you want. It's perfect for those times when you want something lightweight that isn't bloated Wordpress.

    So I am going to surprise you all by not weighing in on the dick-measuring contest that is language comparison. You can write bad code in any language, PHP just makes it easier to do so. I think this is a great project and if you have a problem with the way it's coded, remember it's open source and anyone can contribute.

    This is the other problem with a lot of people that frequent this site, but not limited to this site. They're quick to complain and point out problems with other peoples code and their choice of language, but rarely ever put their keyboard where their mouth is and actually bother to make a difference by contributing to an open source project.

    So my advice to anyone who came here to comment on the choice of PHP or the way it's coded would be to take it elsewhere and learn to compliment someone else's work. It's attitudes like the ones I am seeing that make people (like the author of this project) not want to release their work as open source because people are far too critical and judgemental of others.

  • The presentation is awesome. Super clean, I love the logo and the video's that let you know just what this thing is. The blurbs of text were enough to get me interested enough to watch the video. The videos were clean and to the point. Damn, for me this is what all landing pages for projects like this should be. I'm not sure if I'll use your product but I'll certainly bookmark the page to learn from later.

  • A small rant: I think it is bad practice to hide content below the page height. I just wanted to close the website because I thought 'nothing to see here' before I accidentally scrolled and more content was revealed.

  • Mods - I think this should be "CMS" (content management system) instead of "CRM" (customer relationship manager), as it's a blogging tool.

  • Since there seems to be some discussion about the code quality for Dropplets, I just wanted to clarify that Dropplets is really just a proof of concept. I'm not a developer, nor do I want to be. I'm good at creating concepts like Dropplets, but that's where my skills as a developer ends. I decided to publish Dropplets with the hope that developers that actually knew what they were doing would help me take the concept to the next level. I stated this on Dropplets.com as well.

  • Code - https://github.com/circa75/dropplets

  • Certainly, learning to use Composer (http://getcomposer.org) to manage the packages such as PHPass and Markdown and autoload will clean up a lot of the mess, also updating packages is as easy as running a shell command (or even in my case a batch file..)

    I'm a bit worried about the amount of mixedin html and php I see too -- one of the benefits of sticking with an existing templating system (though people will say that's superfluous since PHP is a templating system) is that data passed into templates can be automatically escaped, whereas just mixing in adds the possibility of an xss issue.

    It also looks like he's using index.php pages as a way to protect his files possibly? I think he need to look into proper .htaccess protection and url routing - ensure that only predetermined urls can even resolve to anything.

    Overall it looks interesting and there's definitely a place for it conceptually but as others have pointed out, the style of PHP is a bit behind what's considered best practice. Still, that can be easily fixed.

  • Side note: I love how this has been in development since at least February (when the Twitter was launched). Too many half-baked projects get posted to HN the weekend they're launched and then never end up progressing much further. The fact that this has been in the works for a while gives me the confidence to try it, knowing this isn't as fly-by-night as a Show HN weekend project.

  • "Dropplets is compatible with most server configurations [...]". Requires PHP (at least), I guess none of my servers has a common configuration :)

    EDIT: the installation part in the README.md needs some extra info. Like it requires PHP and some file/directory permissions.

  • The concept and simplicity make me think of Ghost's (http://ghost.org/features/): free, open source, near-minimalist, and self-hosted.

    The seemingly only advantage is that Dropplets doesn't require a database, and its landing page is amazingly beautiful, clear, and to the point (though Ghost's "features" page is slick as well).

    On a more technical note, click events seem to be propagated up the player on the landing page, closing it when toggling HD for example.

  • I like Pico (http://pico.dev7studios.com/).

  • I thought this had something to do with Drupal. I guess not :)

  • Looks nice, nothing new - https://github.com/kolber/stacey - http://bolt80.com/piecrust/

    The video was down for me, but maybe the uploader makes it easier then some other systems? When I try to teach non tech people to use a db-less CMS with no online admin, they get Markdown (they can at least copy and paste my example pages). But uploading files, WinSCP, FileZilla, etc and opening its NOT in word... this blows their minds. So if anyone has seen the uploader and it makes it super simple, it might be worth checking out.

  • This looks awesome. Kudos to the author for doing this. Not a big fan of PHP, but I love everything else about this project - from a product perspective.

    Not getting into the code.

    I tried playing with the demo and the 'admin panel' (by pressing the dropplet icon in top left) didn't show up for me in Chrome on Windows 7.

    The screen moved slightly to the right (say 2 px) so I knew it was supposed to move...but it didn't go the full way.

    Not sure why that is.

    Edit: It looks like some sort of JS error:

    Uncaught TypeError: Cannot call method 'create' of undefined measureIt.js:120 (anonymous function) measureIt.js:120

  • This looks promising. I'm gonna give this a try since I'm looking for a simple and lightweight CMS for my blog. Speaking of which, anyone have any recommendations about that (apart from Jekyll)? I still haven't found what I'm looking for and I'm on the verge of coding my own blog in plain HTML instead of just installing something like Wordpress but that may be a pain in the ass to manage once I have more than handful of posts on my host.

    But who knows, maybe Dropplets is the one.

  • Having tried it out before, I found the format used for blog posts to be incredibly arbitrary. It requires your twitter username for every post, and a bunch of other things. Plus, instead of using key/value pairings with yaml or something similar, it required that your headers be in a specific order.

    It seems cool, it also seems like a little bit of work could be put into making it more accessible to people who didn't write it.

  • I tried to set this up a few months ago. Apparently I was formatting post headers incorrectly, because I couldn't get any posts I wrote to show up on the site after upload. No error messages or anything.

    It's pretty, but the workflow isn't much better than Jekyll. I would have been happy if there was a post editor in the admin panel, but that's apparently not going to happen.

  • Just a note: Chrome 24 on Ubuntu and the videos aren't autoplaying. I have to right click + play. Would be nice to show some controls :)

  • Quick link to demo: http://dropplets.com/demo/

  • looks great! definitely will have to try this out.

    it's a little discouraging, however, that the issue queue has so many pull requests, comments, etc. without comment.

    i love the concept of simplicity and i'm sure the maintainers have a roadmap in mind. it'd be nice if that was communicated a bit so i can know how simple they plan to keep it.

  • This is very nice looking, but I have to nitpick about the "30 second" install. It takes 30 seconds, assuming you've already installed an operating system, a webserver, PHP, and set everything up securely. For a beginner that is really non-trivial. Still better than Wordpress, though.

  • Looks like a nice system. Coincidentally I've been working on something similar, albeit a little more on the simple side: http://www.grimmdude.com/2013/08/22/jebson-cms

  • It looks really good, but I hate a lot about the demo theme. Why does anything move without me doing anything? Will the annoying bottom bar always be there? What if I can't find a high-res artsy photo? Was it necessary to knock off Medium's (distinctive) menu icon?

  • Not sure if it's the same for everyone or not but I'm having issues playing the videos on Chrome.

    The videos either just stay on the Dropplet background with the music playing, or it just goes away. In all this the BG music keeps playing though like it's playing like normal.

  • This project its architecture would benefit greatly when leveraged by a framework like Laravel.

  • With no database, you can install Dropplets in seconds on any server, compose offline using markdown, then simply upload to publish.

    Cool, sounds almost as easy as writing html and deploying it with ftp. We've come full circle to 1996.

  • Can someone please tell me how this is different from Jekyll? They both work based on the same concept if I'm correct?

    Also, how about support for category pages? I mean, show a page full of posts from one particular category only? Possible??

  • One could argue that in this case the server's file system acts as the database.

  • Amazing. Since the dissolution of Posterous, I've been looking for something simple and easy. And with the theming abilities, it looks like it might just be perfect for me. Can't wait to give it a try today!

  • I love the design, concept and copy, but will someone please explain what Dropplets uses in lieu of a database? (I may have missed something, but I don't think that was explained in detail.)

  • warning: typical HN nitpicking (I know, typical, but it was just my first reaction upon seeing the code & I want to be honest).

    I looked at the code and my first impression wasn't good. These are minor issues but such "smells" are red flags (to mix metaphors) and warn me away from the codebase

    https://github.com/circa75/dropplets/blob/master/index.php#L...

        } else if($_GET['filename'] == 'rss' || $_GET['filename'] == 'atom') {
    why would you set a get var called "filename" to request an RSS feed? There is no actual file called `rss`, so it's not a file name. So the filename get var is really maybe a file name, maybe some other non-file resource being requested. This is confusing & unintuitive, makes the code harder to read & parse.

    https://github.com/circa75/dropplets/blob/master/index.php#L...

        $posts = ($pagination_on_off != "off") ? array_slice($all_posts,$offset,($posts_per_page > 0) ? $posts_per_page : null) : $all_posts;
    too many ternaries!! Why are you testing against a specific string ("false") to indicate a boolean value? This is a major smell as it suggests the author doesn't know the proper use of basic PHP data types.* Why are you adding a ternary if to test posts_per_page size rather than just setting it to `null` to indicate "all posts" in the first place? How can pagination be true with unlimited posts per page anyway? Make posts_per_page null by default, remove redundancy in pagination config var name, make it a bool, and you're left with:

        $posts = $paginate ? array_slice($all_posts, $offset, $posts_per_page) : $all_posts;
    
    I don't mean to condemn the efforts of the author: everyone starts somewhere and this looks like a pretty dang cool project, but smells like these make me walk away immediately because they indicate this code is going to be confusing and hard to work with. One last one: functions.php. This will send a cold chill down the spine of any PHP dev familiar with the bad old days. Group code logically, write reusable modules, and use namespaces (well skip this last one if you want to support old/cheap hosting)! No need to code like its PHP 4 anymore :)

    * Yes I see that it's a user defined setting in settings.php or config.php and an argument could be made that a user would understand "on"/"off" more easily than true/false, but this is a trivially solved by a comment & would make the code more robust and readable. More robust because string comparison in PHP is case sensitive, so if the user sets the setting to "OFF" it will effectively be "on." Boolean solves this.

  • My only recommendation would be to use the new password api going forward and password_compat for versions less than 5.5. I don't see a php version requirement in their docs though.

  • All I see is a link to a zip and a link to "http:///"?

  • Anyone looked at the code and see how this works? When you publish does it generate html or does it do it for each GET?

  • Old always becomes new again. 10-15 years ago this was called Newspro/Coranto by early bloggers.

  • So is the marketplace going to be open to developer/designers as well?

  • Nice design, next step, a mobile friendly CSS.

  • This is actually sort of cool-looking.

  • "Installing Dropplets can be accomplished in about 30 seconds or under. Just download the latest version, extract "dropplets.zip", then upload the extracted files to your server."

    yeah, setting up a dropplets server is simple... step 1: already have a server set up.

    who are these "simple" platforms supposed to be for if you already have to have a "server" set up that you can "upload" to? if i can set up a server, why can't i set up a database?

    this just seems dumb.

  • Promising CMS. Installs in a snap. Any new templates being released soon? The cupboard is bare.

  • It is powered by PHP. They probably feel ashamed as they don't say it anywhere on the webpage ;-) Seems nice tough!