Feurious on Rails: Star City Gigs
Tags: design, showdev, sideprojects
Published: 2019-10-30 17:31:55

_Photo by_ [_AbsolutVision_](https://unsplash.com/@freegraphictoday?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) _on_ [_Unsplash_](https://unsplash.com/s/photos/cork-board?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

# Application 1: Star City Gigs

***

## Short Description

***

The purpose of Star City Gigs is to give people within my local area a place to post odd jobs or projects they need work done for. Professionals in the area can also create a profile for themselves to increase their visibility to potential clients.

## Reason For Building

***

I recently began networking more with people I would encounter during my daily stops and routines. One of the questions I would ask usually is 'Do you do anything on the side or have a skill that you would like to receive work for?". I got some surprising answers to this question.

Unknown to me this whole time was the fact I was talking to people with very interesting skill sets. Artists, Designers, Massage Therapists, hell, there is one guy I learned knew some things about sound engineering and would clean up the audio for podcasts! I thought to myself "What the hell is this guy doing working at Starbucks?"

I pressed further on some of them if there was something that could empower them to get more work opportunities using those skills. The most recurring answer I got was "visibility" which makes sense to me. Platforms like Fiver, Upwork, Freelancer are over-saturated, hard to get started on, and often end up being just a race to the bottom.

So this is why I'm building Star City Gigs, an application for professionals like them to get noticed by people looking to have work done that requires their skills.

## Application Design

***

### Stakeholders

***

Stakeholders are the different types of users who want to achieve some goal by using the application. I have categorized them by internal ( user associated with the entity or person running the application ) and external. ( everyone else )

#### External

* Clients - User who needs work to be done by a professional
* Professionals - User who is looking for new clients to work for

#### Internal

* Admins - User who manages the application (just me at the moment)

### Features

***

#### As a "Client", I want to...

* Create a gig
  * with a summary
  * with details
  * with a budget(?)
  * with tags to categorize the type of work
* Manage my gig
  * by changing its status ( ex: mark as completed )
  * by changing the tags
  * by changing the name
  * by changing the details
* View a directory of professionals
  * Filter the directory by the type of professional
* View the details of a professional, such as contact information

#### As a "Professional", I want to...

* View a directory of gigs that have been created
  * Filter the directory by the type of work needed for the gig
* Create a profile
  * with a name separate from mine ( ex: MyCompany LLC )
  * with tags for the type of work I do
  * with my rates(?)
  * with my contact info
  * with examples of my work(?) ( Upload Images )

#### As an "Admin", I want to...

* Manage users
* Manage other application resources if needed

### Models

***

From reviewing the stakeholders and features, several concepts have materialized in the application.

#### User

* Has some generic information common to users(email, password)
* Has one professional profile
* Has many gigs
* Has many roles ( can just have admin role for starters )

There are will most likely be more since I'm going to use [_devise_](https://rubygems.org/gems/devise "devise") for user management.

#### Gig

A gig is a short-term or project-based task that a client needs done by a professional.

* Owned by a user
* Has a summary
* Has details that further expand on what the work entails
* Can have a budget
* Has tags that describe what type of work this is
* Has a status ( open, in-progress, completed, deleted, etc )

#### Profile

A profile is created by a user to indicate they are a professional with skills to offer to clients.

* Owned by a user
* Has a name
* Has a short description of themselves
* Can have rates
* Can have images to show example of work
* Has tags to categorize the type of work associated with the profile

#### Tag

A tag is used to categorize gigs and profiles by what skills are associated with them.

* Has a name
* Can be linked to many different models
* Maybe something else to categorize it? ( ex: "web application development" is categorized as say "software development" )

#### Role

A role gives the user access to certain areas or features of the application that are not present without it.

* Has a name
* Can belong to many users

### UI Design

***

Visual design is not my strong point. I do have an idea of what I would like the application to look like longterm. Initially, however, I will most likely just make it look decent with Bulma or Bootstrap.

The idea I had for the design is based on one of the inspirations of the application idea, a corkboard. Ya know, those little boards usually in places like college foyers and coffee shops that have various event fliers and business cards stuck to them with thumbtacks. I thought it would be fitting for it to look like a "virtual" corkboard essentially.

The background of the main content is some cork-like texture or image. Each gig or profile is shown as something like a flyer or sticky note stuck to the cork-like texture. Each one can be clicked to view all the information about it. Not sure how easy on the eyes it would be though.

## Final Thoughts

***

I will start on the implementation as soon as I can, most likely within the next few days. Feedback on the design decisions are appreciated as this meant more as practice than anything.

This post originates from [_here_](https://www.feurious.com/posts/feurious-on-rails/feurious-on-rails-star-city-gigs/)