Skip to content
Lance Pollard edited this page Apr 22, 2012 · 11 revisions

Roadmap

For 0.5.0, Tower will include the features below. It's going to be a rolling list. If you have ideas or features you'd like to see, include them in the section Potential features section and we'll move them up if they're in scope.

Let me know if you'd like to implement any of these things, will help speed up the process.

You are free to implement any of these features in any order… I'm more of a fan of doing what you want when you want to, as long as it follows some general plan. I stay motivated and get way more done that way.

0.5.0 - Full Featured Release

✔ 0.4.0 (functional release)

  • Extend helper method urlFor so that can it resolve to registered paths (aliases) for routes
    • urlFor route: 'signIn'
  • hasMany through associations (Post.hasMany "comments"; Post.hasMany "commenters", through: "comments")
  • database seeds
  • test model pagination
  • auto-restart server when file changes (development)

0.4.1 (tests)

  • generate test/models with example code for scaffold
  • generators for tests
  • load tests in browser
  • make "database cleaner"
  • test setup for http requests (controllers)
  • test the command-line api
  • basic client test setup for tower development
  • extends hook for coffeescript
  • test "factories"
  • basic tests for socket.io
  • generate test/controllers with example code for scaffold
  • test the generator code
  • NODE_ENV=production

0.4.2 (views)

  • ember.js integration
  • automatic form validations based on model of client
  • error/stacktrace printing when view fails to fully render
  • finish table builder
  • make form builder more robust
  • 404/etc error pages
  • error handling on forms when validation error
  • test client side view rendering with coffeekup
  • test client side view rendering with ember
  • test files reload when changed (integration test)
  • test assets can be served with gzip

0.4.3 (controllers)

0.4.4 (models)

  • basic model logging (so you can see things like database queries)
  • remove dependency on mongodb
  • uniqueness validation (database should not save a record unless specified attributes are globally unique (i.e. username))
  • email/phone validation (and other common validation helpers)
  • i18n (internationalization/​localization, how to organize the random labels in the app, and prepare for translation into other languages)
  • strict! validation
  • confirmation validation
  • add includes to associations: Post.includes("author").where(author: firstName: "=~": "Baldwin").all()
  • mongo url handler (https://github.com/viatropos/tower/issues/52#issuecomment-4586648)
  • model indexes in mongodb (and potentially in memory, i.e. a redis-like plugin for the browser)
  • test index creation in mongodb
  • nested field queries ("addresses.city", etc.)
  • mongo embedded documents
  • test inheritance with type property
  • model#reload
  • acceptsNestedAttributes
  • find(id: null) # find by null
  • where(name: "!=": "x")
  • find(address: city: "San Diego") # nested doc/object queries
  • make store global, so you only have to apply it once, not per model.
    • makes testing easier.

0.4.5 (model extensions)

0.4.6 (sockets)

0.4.7 (background jobs, emails)

0.4.8 (helpers, configuration)

  • add underscore helpers
    • pixel transforms (px to em to percent to rem)
    • color transforms (hsl to rgb to hex, etc.)
    • unit transforms (miles to km, etc.)
    • geo transforms (lat/lng to x/y in pixels, etc.)
    • date helpers
    • string helpers
    • number helpers
    • validators
    • masking input fields (phone numbers, social security, email, money, etc.)
  • customize template engine, orm, and test framework in App.config
  • create normalized file/directory api (wrench, pathfinder, findit... need to merge this stuff into one)

0.4.9 (cleanup, optimizations, documentation)

  • chunk code into parts for the client, so you can use only bare minimum if desired
    • so you can do things like require('tower-model')
  • finalize tower.js internal code organization
  • design.io updates:
    • growl notifications
    • auto-run tests
  • document code
  • Add generator for translating different locales in tower.
  • standardize Tower.x api for global helper methods.
  • get design.io working on all platforms
    • remove ruby dependency if possible
    • make css @import compiler smarter
    • test and make sure it compiles all files on the first run
    • deleting/creating files isn't registering anymore, fix.

0.5.0 (theme)

0.5.1 (benchmarking)

Separate plugins

  • Make a mocha web console reporter.
  • User stamping
  • Versioning
  • Advanced (lucene) search (down the road)

TowerPassport

Tower.Authorization (TowerCanDo)

Tower.Attachment

  • paperclip?

NestedSet

Tower.Titanium

It's going to be very easy now to make Tower work with titanium mobile. With coffeekup, you can have the form builder compile down to titanium objects no problem, something like:

App.View.helpers
  tabs: (options = {}) ->
    Titanium.UI.createTabGroup(options)
    
  tab: (options) ->
    options.window ||= @currentPane
    Titanium.UI.createTab(options)
    
  pane: (options, callback) ->
    @currentPane  = Titanium.UI.createWindow(options)
    callback()
tabs ->
  tab id: 'posts-tab', title: "Feed", ->
    pane title: "My Blog", ->
      table id: 'posts-table', data: App.Post.all()

Support for alternative data stores (as plugins)

These are next, larger features. These will be included in earlier releases if a member of the community contributes them. Otherwise they might be approached after the 0.5.0 release according to community requests.

  • Neo4j support
  • CouchDB support
  • (PostGreSQL support ?)
  • (MySQL support ?)

Potential Features

Tower.js

Everything here will be reflected on http://towerjs.org/guides.

Clone this wiki locally