Introducing Junecode 3.0 (formerly Tense Code)

After a year and a half of work, I'm excited to present the first beta of Junecode 3.0, my web site content management system. In short it's a piece of software that makes creating, editing, and maintaining a web site easier. You may know it better as Tense Code, which is what I was calling it until about a month ago. I'll explain more about the name change in the future, but for now let's talk about what's new in Junecode 3.0. The list is very, very long, but here's a quick rundown of the best of it:

  • All new design and improved navigation. Many areas have been tweaked to make it easier to get around and edit your sites. It's also fully optimized for the iPhone and iPod touch, so you can access nearly every feature from anywhere.
  • Re-order categories just by dragging them around.
  • Unlimited metadata. It's now easy to add various extra fields to your entries. Add a text field for the music you're listening to, a pop-up field for a star rating, a checkbox for whether or not you want a muffin right now, or anything else you can think of.
  • Automatic Google Sitemaps.
  • Fully customizable contact forms are now as easy as editing a template (which is as easy as editing HTML).
  • Display RSS feeds on your site. (I use this along with the clippings feature in NetNewsWire to post news I find interesting on my site.)
  • Bookmarklets (or Favelets) for quickly posting stuff you find online to your own site.
  • Take your site down for maintenance with a couple clicks if you're working on a new template, rearranging categories, etc.
  • Improved features for dealing with spam: spam detection is improved. You can delete multiple comments at once. Moderation emails look nicer and they're easier to use. Contact forms have spam detection and they'll present a captcha if they're suspect.
  • Many different languages are now supported, including Japanese, Chinese, Arabic, and more. Junecode's own text is presented only in English, but you can use it to create a site it any language now. Various special characters are automatically dealt with too, which makes life a lot easier if you're pasting it text from a Word document, for example.
  • Much better compatibility. Among other things, it longer relies on DOCUMENT_ROOT. I've tested myself on Dreamhost and GoDaddy servers, but it should work just as well with many other web hosts. Installation is much easier too!
  • Optional caching. On average pages will load 3-4 times faster when they're cached, because it's just displaying a file instead of doing a ton of database lookups and parsing templates.
  • Many many bug fixes and security enhancements.

Aside from all that, and all the little features I didn't mention, there are a couple of other big things in the works:

  • Online store support. Adding a product is now as easy as adding an entry. You add different formats for things like shirt sizes, CD vs. MP3, and so on.
  • Download sales are supported so it's easy to sell songs or other files online.
  • Payments can be handled by PayPal or through the mail. PayPal Payments Pro is supported too, so you can accept credit cards directly on your site.
  • FedEx can be used for automatic shipping calculation (or you can enter set prices for shipping if you prefer).
  • Mailing list support. You can now manage all your contacts right alongside your site, and create beautiful HTML emails as easily as creating any other template. Custom tags are supported in emails so you can automatically insert your latest entries, products for sale, or whatever you want.

These store and mailing list features are not included in this beta. They're currently undergoing a private beta, and they will only be available with a paid license. The rest of the software will continue to be free for personal and non-profit use!

Of course there's also a new Dashboard widget for Mac users:

Aside from the new look, the widget also has some new features:

  • You can now drop multiple files onto the widget at once (and then open them all in your browser with a single click).
  • You can now copy the URLs of the uploaded files after they’ve uploaded (using command-c). Due to a bug in Dashboard this feature probably won't work for most people right now, but once Apple updates Safari it should start working.

If you'd like to try it out you can download Junecode 3.0 beta below. I've been using this for a while now myself and I think it's pretty solid. However it hasn't been widely tested, so I recommend some caution. If you're upgrading from Tense Code, I strongly recommend that you back up your database and your files before you proceed. Also please note that the help has not been updated yet. Most of it is still true, but you'll probably find many things are missing or inaccurate.

Updated in beta 2 on November 12th, 2008

  • The Junecode logo will now display correctly in Internet Explorer
  • Miscellaneous bug fixes
  • Added a juneindex:audio tag
  • Added a hidden argument to the juneindex:files tag (a comma-separated list of file names to skip, including extensions but not paths)


Download Junecode 3.0 beta 2 (see instructions for requirements)
Download Junecode widget 3.0 beta 2 (requires Mac OS X 10.4.3 or later)

Let me know what you think in the comments below!


This entry has 8 comments.


Scaught wrote on July 25, 2008:

You always do great work Mike, and I really would love this feature for Wordpress:

"Take your site down for maintenance with a couple clicks if you’re working on a new template, rearranging categories, etc."

I'm sure there's a plugin to do it but that's not the point ;)


clutteretta wrote on July 28, 2008:

rockin, Mike.


Jon wrote on August 2, 2008:

Awesome. How would you go about adding the album artwork to a Junecode site?


Carianoff wrote on August 5, 2008:

SUP MIKE! Long time no talk.

This looks slick, why should i use it over WP or Drupal?

Mike Piontek

Mike Piontek wrote on August 5, 2008:

Hey Mike!

Well, I originally created Junecode because I just wasn't happy with any of the other options available, and I wanted something I could heavily customize to suit my needs when I needed to. It seemed easier to just start from scratch than dig through someone else's code and try to make sense of it.

I haven't spent enough time with recent versions of WordPress or Drupal to do a thorough comparison, but I do think there are some definite advantages. WordPress puts all your entries in directories by year and month, whereas Junecode lets you set up categories with any directory name you want, and your entries are filed inside those—so you have full control over your URLs, like on any web site. (This is better for SEO too.) I'm not sure if either automatically saves drafts automatically as you type, but that's a feature I hadn't seen elsewhere when I added it to Junecode. Junecode has built-in caching. Junecode templates use HTML-style tags instead of PHP—which could be an advantage or disadvantage depending on your point of view. Junecode gives you full control over automatically-generated thumbnails… you can specify a crop area (just by dragging), and have some sort of border overlaid on them if you like. You can use a single Junecode installation to manage multiple sites with multiple users—I think Drupal does that but I don't think WordPress does.

I think it's particularly well suited to designers. My main goal has been to not force any limitations on the design and organization just because it's managed with a CMS.

There's more info about the previous version of Junecode at and most of it still applies. I'll also be putting up more screencasts here soon to show off what it can do and how it works.


Nathan wrote on August 18, 2008:

Hey Mike,

Had to give this a code. Some really slick stuff, and a nice simple admin interface, but would I be correct in assuming this is more intended as a "blogging platform" rather than a proper CMS? As far as I can see it's all about posting entries, and there's no apparent way of setting up pages, in a site tree, with possibly multiple areas on the page to edit.

Obviously if that's the intended use for Junecode, then props. But it does strike me that so many nice "CMSs" come out that are really blog platforms, and there's very little in the way of a traditional CMS that doesn't have an admin interface that would scare the heck out of any client. ;)




Nathan wrote on August 18, 2008:

*Had to give this a Go, rather

Mike Piontek

Mike Piontek wrote on August 18, 2008:

Nathan, my reply to your question ended up so long that I figured it deserved its own entry.

View more


Showing the contents of an RSS feed with Junecode Someone asked me recently if it's possible to subscribe to an RSS feed from a Junecode…

Using Junecode for a site that isn't a blog In reply to this entry, Nathan asked: Had to give this a [go]. Some really slick…

Tense Code 3.0: a quick tutorial This entry is part of a series showing off the new features in Tense Code 3.0. Tense…

Tense Code 3.0: a new look and iPhone support This entry is part of a series showing off the new features in Tense Code 3.0. Tense…