One Month App

Nov
04

by
Stephen

2

Technical Wrap-Up

We launched Pulse on October 24th, on schedule, albeit a little later in the day than we expected. One of the main reasons we did this app was to blog about the process and get some discussion going with our colleagues. This worked out pretty good but you did not hear as much from the technical side as you should of. This is definitely something we will do better if we do something like this again.

We chose September 24th through October 24th because we were balancing a lot of projects on the front end and I had a much needed shoulder surgery planned afterwards. We were wanting to do this application early in the fall, so that we could spend some focused time on Reflect through the end of the year and the beginning of the next.

This timeframe seemed to be pretty good especially considering that both Nate and I would be programming and the application should not really take a month program if we are sticking to our goals, but things don't always work out the way we plan.

Nate ended up not being able to program on the project at all due to other projects that we were involved with. These projects ended up taking a good chunk of my time as well. Needless to say a lot of this project was programmed in the last week and a half of our timeframe but everything came together nicely and on schedule.

Deployment and Launch Day

Our server was graciously donated by Global IP Networks which is a new venture from the same guys involved with Globalcon.net. We received our server about a week before the planned launch date. At that point I went ahead and installed a little bit of the production environment just to make sure everything was functioning properly.

When launch day came around, I had a number of items on my plate. These were to finish up a punch-list that Aaron had put on Basecamp, implement a few more features, finalize the production environment, and finally launch. I had already completed and tested my DNS changes because we were using a brand new domain name.

The punch-list included mostly straight forward items as well as a javascript issue that we had found the night before. The javascript issue was a major issue because it basically broke the adding and editing of payments. I can deal with most javascript issues but I was not sure of an immediate course of action for this problem. I made a gamble and went to sleep at a normal hour in hopes that a fresh and rested mind would solve the problem quicker. This gamble worked out great and I was soon to my other items early in the morning.

First I finished the punch-list and then I tackled the server setup. Things were wrapping up nicely, so we decided to work on another feature that we could slip in before launch. While the feature worked, we spent a few more hours on it than we wanted and there were also a few small issues with it that made us uncomfortable. Despite the time we put into it we decided it would be best to add this feature at a later time.

We decided to start pushing everything live at about 3:30 in the afternoon. At first everything seemed to work great, but then we noticed an issue with how the app scrolled through the months. This was not very fun because it was only an issue on the production server. Everything worked great on our development server as well as our local machines.This issue eluded me for many more hours than I would like to admit, but I was thankful that I had rested well the night before because otherwise my mind would have been clouded by both tiredness and rage.

Finally we launched the application. We then monitored it as people signed up and pushed a few more tweaks live.

New Features and Tweaks

We still have some new features and tweaks in the works. They will be coming after we get some good user feedback and have adequate time to implement them. We would love to hear any ideas that you may have that could make the application better.


Oct
24

by
Aaron

23

The One Month App has launched!

We're very pleased to announce that the One Month App is finished, and Pulse has arrived. Go check it out:

pulseapp.com

So, what is Pulse?

Pulse is a web-based cash flow management tool that allows you to easily monitor the heartbeat of your small business -- your cash. Say goodbye to unmanageable spreadsheets, and hello to an intuitive interface with the power to quickly manage and evaluate your income and expenses. Pulse makes tracking the health of your business simple, accurate and efficient.


Oct
24

by
Aaron

6

Pulse is launching today!

We're putting some finishing touches on Pulse and will be launching later on today. Enter your email address in the form on the sidebar and we'll email you as soon as we launch.

Stay tuned!


Oct
21

by
Stephen

62

20 tools for web application development

One of the main reasons we started the One Month App is because people always seem to be interested in our development process. One of the aspects of our development process is naturally the software and tools we use. The following is a list of the tools that we have used on this project and others, covering our full technology stack that includes desktop, hosted and server applications. We would be very interested to hear about any tools that you use in your development process as well.

Ruby On Rails

Ruby on RailsRails is an open-source web application framework that is geared towards developer happiness and sustainable productivity. This is currently our preferred framework and we have been using it for the past couple of years.

Textmate

Textmate iconTextmate is a text editor for Mac OS X. I found this editor a few years ago. Soon after that, I started seeing it used in a lot of screencasts that showcased various web development technologies. It appears like a simple editor, but it packs a lot of useful features under the hood.

Skedit

Skedit iconSkedit is another text editor for Mac OS X. We'd argue that Skedit is more designer friendly than Textmate because some of it's default features sets such as special characters helpers and remote file capability. Skedit makes writing clean markup a breeze for a web designer.

Adobe Creative Suite

AdobeA standard suite of software for any designer, we use Adobe Creative Suite for everything from design mockups to slicing up graphics for the web.

SnapNDrag

SnapNDrag iconA very simple piece of software for Mac OS X that allows you to take screen captures and simply drag them from the software to another piece of software (such as Adobe Photoshop). This is great when you are considering a UI change and you want to take a quick screenshot, pull it into Photoshop, and make a quick mock-up.

Parallels

Parallels iconParallels is an essential tool for allowing cross platform/browser development. We use this as we are testing our web applications in various web browsers and platforms.

Firebug

Firebug iconFirebug is a plug-in for Firefox that has many web development tools. The main use that I have for it is the inspect feature. This allows me to inspect the HTML at any time including after AJAX calls have taken place.

Basecamp

Basecamp iconWe use Basecamp to communicate and collaborate on all of our projects. It allows us to set up a schedule with milestones and keep our messages and to-dos all in one spot.

Lighthouse

LighthouseLighthouse was developed by our friends at Active Reload. It's a reasonably priced web based hosted tool for dealing with bug/issue tracking in software projects.

Subversion

SubversionSubversion is an open-source revision control system. I'm not really sure how we developed websites without using subversion in the past. What I do know is that I do not want to go back. Not only does subversion keep track of our revisions and protects us while multiple people are working on the same things, but it is also the reason that I hardly ever open up an FTP client. Sorry Transmit, I still love you.

Warehouse

WarehouseWarehouse was also developed by Active Reload. It is a web based tool that lets you browse through your subversion repositories. Unlike Lighthouse, you can install this software on a server of your choice.

Terminal

Terminal iconTerminal is my second most used application. I use it while working in my local environment as well as interfacing with our servers. I have always liked Linux over Windows, but I felt that some of the user experience was a bit lacking. When OSX came around with its BSD foundation a lot of us web developers started making the switch. It has great user experience, but you can open up the terminal and feel at home.

Incubator

Incubator iconI found this great piece of software about 3 years ago when it was known as pyramid. We use it for all sorts of various tasks that require organizing thoughts.

SQLEditor

SQLEditor iconI have been lightly searching for a simple Entity Relationship Diagram (ERD) tool that was native to OSX for the past few years. This is a tool that I found when I started this project. It certainly fits what I am looking for.

MySQL

MySQLMySQL is an open-source database that we use for most of our web applications. Another great package that we occasionally use is PostgreSQL.

MySQL Query Browser

MySQL Query Browser icon MySQL Query Browser is a GUI application to help you take a quick glance at your queries. With features that allow you to save and bookmark queries, as well as built-in documentation on the available features of MySQL, this tool makes developing and working with schemas an easy process.

Linux

Linux iconLinux has been my preferred server operating system for nearly a decade or as long as I've been developing web applications. All of the tools that I use are at home on this platform.

Mongrel & Mongrel Cluster

Mongrel is a fast HTTP server for Ruby applications. Mongrel Cluster is a GemPlugin that wraps the mongrel HTTP server and simplifies the deployment of web applications using a cluster of Mongrel servers. Mongrel Cluster will conveniently configure and control several Mongrel servers, or groups of Mongrel servers, which are then load balanced using a reverse proxy solution.

Nginx

NginxNginx is a lightweight HTTP server that we use as a reverse proxy for our Mongrel Cluster. It also serves up our static and cached files.

Monit

Monit is a utility for managing and monitoring, processes, files, directories and devices on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations. We mostly use monit to keep track of our Mongrel processes. If one fails or starts using too much ram, it will automatically restart it.


Oct
17

by
Stephen

1

Technical Update

The application itself is coming along nicely. As always, it has been quite a struggle to focus on a venture of our own while maintaining client projects. Nate has not been able to work on this project as much as any of us would like, however he is giving great input and he will be able to focus on some of the marketing efforts after the month is up.

I generally start a new Rails project with just enough in there for Aaron to be able to mock up each of the screens. This means that after I completed my database design I moved right into stubbing out the application framework even further with my new models and test data. After that I decided to tackle the users/account and authentication first. Although most design is done prior to programming, Aaron typically styles the login, signup and related screens after this is in place.

I am currently completing the main cash flow or "worksheet" screen. I will be adding the Basecamp integration next and then I will finish out some of the smaller supporting screens.

In my next update I will be discussing some of the tools and technologies that we are using for this application.


Oct
17

by
Aaron

12

One Month App gets a name and logo

After much deliberation, we've decided on the name Pulse for our cash flow management tool. And here's the new logo:

Pulse: Cash Flow Management

Although there were some excellent (and quite funny) suggestions from our post the other day, we felt that Pulse mostly clearly defined what we are trying to do with this application both now and in the future. We think cash flow management is about tracking the pulse and vital signs of your small business. In addition, we've got some potential new features in mind (for the future) that would make this application as much about business health tracking as it is cash flow. The logo concept is simple and effective. By making the letter "l" of the word Pulse into a rhythmic graphic, the idea clearly shines through.

So, let us know what you think. We hope you like it as much as we do.

While Stephen and Nate are finishing up the programming for the app (more posts from them are coming soon, I promise!), I'll be jumping into developing a simple promotional and signup website for Pulse. Things are really heating up.


Oct
15

by
Aaron

8

Help us name the one month app

In a perfect world, with perfect timelines and perfect budgets, we'd hire a branding agency to help us devise the perfect name and branding for the one month app. That perfect world definitely does not exist in this short month, so we are tasked with coming up with a name and giving it some kind of brand. And to be honest, we'd really like your help. So, if you're willing to throw out a name or two (without any strings attached), then post a comment with your best idea(s). To get things rolling, we've been brainstorming words, ideas and potential names:

Cashwatch, Cashtrack, Moneytrack, Racetrack, Cashline, Cashway, Pulse, Cadence, profit, prosper, flourish, thrive, metric, advance, manage, cascade, Cashmeter, Flowtrack, Trackflow, Flowmetric, Traction, Fit, FitMetric, Trim, Cultivate, cash cow, CashMetric, CashGlance

On a side note, we don't have to have the "dot com" but a catchy domain to go along with the name is always a plus.

Update: We've chosen "Pulse" as the name.


Oct
11

by
Aaron

6

Using tbodys for javascript hooks

When writing the markup for the main cash flow chart, I knew that it was going to involve tables to make everything line up well while keeping the fluidity of the layout. That in of itself is a simple thing to do of course, but I also wanted to provide a certain layer of organization that made the javascript work simply. Here's a quick tip in using tbodys to provide hooks for javascript.

In the design there are groups of table rows that need to be targeted to expand and collapse the content. In a normal situation, I would wrap a div around whatever I was wanting to show/hide or toggle and use the prototype library to target it with a javascript effect. However, wrapping a div around table rows doesn't work in keeping with semantic markup. In comes the tbody. I created a "income" tbody and an "expenses" tbody to provide the hooks for the javascript. Take a look at this video to see the javascript effect in action.


Oct
09

by
Stephen

2

Database Design

One of our first real technical tasks is database design. While some of this is in the back of our minds though the initial stages, it becomes more important as we start to nail down the front end interface. This is the point where we make sure everything that has been designed is taken care of from a data standpoint.

We also focus on the future scalability of the application. For instance, although we will not be allowing multiple worksheets in the initial application, we have created a table for this to tie all data to a particular worksheet from the get go. This will allow for easier implementation in the future if we choose to add this feature. At the same time, it is important to not focus too much on the future as you risk causing yourself a lot of problems for things that may never happen or could be dealt with easier down the road - be sensible.

ERD screenshot

One of the things I wanted to do on this website was share some of the tools that we use. For years I have been searching for a good and simple Entity Relationship Diagram (ERD) tool for OSX. I do not have the desire to use these for every project, but I do find them useful at the beginning of projects. Last week I came across SQLEditor. I have been trying it out on this project and it seems to be about what I have been looking for.

I completed the initial database design at the end of last week and have since moved on to the actual programming. I will post more on that soon.


Oct
03

by
Aaron

4

Simplifying the interface

As I started to build out the initial design mockup into HTML/CSS, I realized that I was going to need to simplify a few things in order to accomplish everything I wanted to do with the interface. I wanted the interface to have a flexible width to accommodate different screen resolutions but mainly to give room for cash flow charts with big numbers and longer income and expenses titles. In deciding upon a flexible width, I realized in order to so with the rounded corners and gradient background, I was going to have to have a ridiculous amount of markup. Also, to be honest, in order to make the layout "bulletproof" I'm not even sure it would be possible. (If anyone wants to try, I'll gladly provide the PSD file.) Here's a screenshot of the revised interface buildout.

Buildout screenshot

From the above graphic, you'll notice that we got rid of the rounded corners, and I shortened the gradient background to just the header. This gave a much cleaner look while making the markup just a mere few lines for the main template:

markup screenshot

The layout did loose some prettiness, but I think with the simplification of the interface and markup it was worth it. What do you think?

Next up, I plan on writing a post on some of the finer details of the markup in regards to the main cash flow chart. I had to freshen up my knowledge of tables on this one!


View the archives