Song Writing and Storage App
Restarting my project from the beginning - To better understand the basics of APIs and functionality.
This time around I am going to work on scalabilty, starting smaller. Build a skateboard first instead of a rocketship. MVP style.
Overall Summary: This will be a Song Writing app to create, organize, save, and edit songs. I would also like to implement a display format for the songs that will be clean and easy to read as if I were using these as reference sheets for gigs (say a dark bar, or poorly lit stage). So in essence, I aim to make the information easy to store, save, edit, and display in a way that is intuitive to playing a fast paced gig in a less than optimal setting. Also I am not proficient in sheet music as with most of the musicians I play with, so this will be a great way to help give my fellow bandmates and myself a quick frame of reference for our songs.
Currently Operational -- Get All Songs, Set 1-5 Buttons, Original and Cover Buttons
Getting the app Started:
- Open up a terminal in the project folder
- then run 'npm install' to install all dependencies
- then run 'npm start' to get the app/server/client up and running
- client is on http://localhost:5000 and api is on http://localhost:5000/api
My Feature list requirement checklist:
- Read and parse an external file (such as JSON) into my application and display the data in my app.
- Create an array, dictionary or list, populate it with multiple values, retrieve at least one value, and use or display it in your application.
- Create a web server with at least one route and connect to it from my application using ExpressJS
- I also created multiple custom functions to get songs by specific set lists and displaying all songs and handling my xhr requests
My steps through designing this project:
- Get the API and server running to display a list of my songs from songs.json
- Add a functions that will search out a particular song by its id, set, tuning, cover or original (co), and or name
- Add an insert method to be able to input new songs
- Add a router put and update method to update our constantly changing songs
- Add a delete method/endpoint to delete songs
- Add the patch method to be able to update partial data (will be most important feature in my case!)
- Add my Song library page to begin GET on Songs
- npm install cors package and configuration
- Work on xhr requests for getAllSongs() and getSet()
- Work on my displayAllSongs() using a while loop and forEach
My Goals for the next phase(s) of this project:
- Get Originals and Cover Buttons working
- Begin working on a Form Input Pages for adding, editing, updating, and deleting songs
- Begin adding the sections for (pre)/& verse, (pre)/& chorus, bridge, solo, interlude, outro etc...
My lofty goals for down the road
- Connect this app functionality to an accessible database for storing
- Have user and admin roles (adding and editing vs. viewing and arranging set lists) and to different databases depending on the band I am adding the song for
- Have an offline storage/viewing option
- Each new song doesn't always have the same structure, so something more to the effect of being able to add the input fields as I go depending on each new song.
- Have a chord img library/db so when I hover over a chord in a song I can see the different fingerings (guitar,piano wise etc...)
- A Transpose feature based on incrementing +1,-1 (by half steps) that will automatically change all the chords in the song respectively
- Datestamps/logs for when songs were originally created and edited for record keeping
- Add a dark/light format toggle switch
Thanks for checking out my project!