Saturday, February 9, 2008

Users and Bands

The core of the system will be the Users, the Bands, and the relationship between the two. As such, one of the first steps is determining the basic profile elements for both, and how to link them.

(* = required field)

Users

  • First Name*
  • Last Name*
  • E-mail Address (used as login and primary key)*
  • Password*
  • Biography/About Me
  • Date of Birth
  • Gender
  • Profile Image
  • City/State*
  • ZIP
  • Personal website URL
  • Instruments Played

Bands

  • Band Name*
  • Unique Identifier (used for the site url and primary key)*
  • Formation date
  • Band Bio
  • Main Band Image
  • Contact Email
  • Contact Phone
  • Band site URL

Band Members

  • User key (e-mail)
  • Band key (url identifier)
  • User role (determines whether the user can administrate or only edit band profile)
  • Instrument(s) played in band

I'm thinking that the User key field will also be permitted to be just a name, if the member is not a user in the system. Then the query for data will determine whether to display the name in the Members table or the name in the Users table. For example, if we start with these three stripped down tables:
mysql> SELECT * FROM Users;
+-------------------+-----------+----------+
| email | firstName | lastName |
+-------------------+-----------+----------+
| izenman@gmail.com | Joe | Izenman |
+-------------------+-----------+----------+

mysql> SELECT * FROM Bands;
+---------------------+------------------+
| name | ident |
+---------------------+------------------+
| This Shirt Is Pants | thisshirtispants |
+---------------------+------------------+

mysql> SELECT * FROM Members;
+------------------+-------------------+
| band | member |
+------------------+-------------------+
| thisshirtispants | izenman@gmail.com |
| thisshirtispants | Jake Westhoff |
+------------------+-------------------+
we can do the following:
mysql> SELECT IF( U.email IS NOT NULL,  
CONCAT(U.firstName, ' ', U.lastName),
M.member ) AS name
FROM Members M
LEFT JOIN Users U ON U.email = M.member
WHERE M.band = 'thisshirtispants';
+---------------+
| name |
+---------------+
| Joe Izenman |
| Jake Westhoff |
+---------------+
This will allow seamless integration of users and non-users into member lists. At member addition time, the band administrator will be prompted to either enter a member name or search the user archive for that member's account reference.

Thursday, February 7, 2008

Features Wish List

This is everything I want tacomamusic.net to be, severely abridged. Feel free to chime in with your own ideas.

Users

  • Secure login
  • General profile - picture, bio, vitals, etc.
  • A listing of bands that the user is attached to
  • A calendar of posted events
  • A calendar of events they plan to attend
  • A feed of activity from all their favorite artists and calendars
  • A listing of saved items that a user has marked in other profiles

Bands

  • Created by a user
  • Other users can be granted edit or admin privileges on a band
  • Audio media can be uploaded, organized by album
  • Video can be embedded from YouTube
  • Bands can be added to events as performers

Venues

  • Venues will be able to create accounts and post show calendars and contact info
  • Venue accounts will be more strictly regulated, to ensure that the user is actually a representative of the establishment

Calendar

  • There is one comprehensive calendar of events
  • Each event is attached to a creator and can be assigned a venue (either plain text or a member of the system) and bands (likewise either plain text or a member)
  • Users can remove their bands from others' events or requested to be added
  • Users can mark themselves as planning to attend a particular event
  • Band profiles have a calendar filtered to just events they are in
  • User profiles have a "Posted By Me" calendar and an "I am attending" calendar
  • Venues have a calendar filtered to their attached events
  • Users will be warned if the system suspects they are posting a duplicate event

Media

  • Bands can upload audio and embed video
  • Bands must respect other copyrights, and users can flag suspected violators
  • Tracks can be specified as streaming or downloadable
  • Users can specify any form of license or copyright on their music.
  • Reviews can be posted by other users if the band enables them

General Interface

  • Users will be able to easily navigate through related bands and events
  • Any item that a user has privileges to edit or influence in some way will be marked as such when hovered over, and clicking edit will pop up an ajax-powered form
  • The front page will include a recent activity listing, upcoming events, a thumbnail calendar

Message Board

  • Users will have access to a general message board for discussion, reviews, classifieds, etc.

Howdy!

Just a quick intro before I get into the meat of this thing...

My name is Joe Izenman. I've lived in and around Tacoma for my entire life, and I've been a musician almost my entire life. I play keyboards, guitar and hand drums, I sing and I write. Lately I've been learning the mandolin. I have a blog about living and working in Tacoma. I am in two bands at the moment: This Shirt Is Pants and Mr. Fusion. TSIP is a hard rock outfit, Mr. Fusion is my collaborative songwriting project with Erich Sachs.

I've also recently started recording at home. As I started getting more material together from a variety of projects, I decided I wanted to put together some kind of system for posting information about my shows and newly recorded tunes, organized by band, album, etc. Over a couple weeks, the idea evolved further. If I'm already going to have multiple bands in the system, why not allow multiple users as well?

Out of this has come tacomamusic.net. My hope is that it will become a comprehensive resource for Tacoma-area musicians, with a unified calendar, song postings, reviews, discussion, and more. Something that goes beyond the capabilities of imeem or MySpace music not because it is bigger, but because it is smaller. By building this from the ground up in a limited geography it has a chance to become a genuine community.

Who knows... maybe it will be good enough to go craigslist on us and add regions until it is universal, but for now I'm sticking with Tacoma.

This blog will be about the development process. Feature announcements, design, and my own experiences learning new technologies in an effort to make this system run as smoothly as is humanly possible.

The best way to have this be a tool for the community is to have the community guide the process. Have a feature you'd like to see that you think I've overlooked? Have input on functionality, design or technology? Interested in joining the development process? Feel free to comment or shoot me an e-mail.

Rock on, Tacoma.