chordbook / chordbook Goto Github PK
View Code? Open in Web Editor NEWChord sheets and tab for guitar and ukulele.
Home Page: https://chordbook.app
License: MIT License
Chord sheets and tab for guitar and ukulele.
Home Page: https://chordbook.app
License: MIT License
Getting a wonky layout and a bunch of warning in the browser console:
data:application/js…:1 Manifest: property 'start_url' ignored, URL is invalid.
data:application/js…:1 Manifest: property 'scope' ignored, URL is invalid.
data:application/js…:1 Manifest: property 'src' ignored, URL is invalid.
data:application/js…:1 Manifest: property 'src' ignored, URL is invalid.
DevTools failed to load source map: Could not parse content for https://chordbook.app/assets/index.c0a45d7b.js.map: Unexpected token < in JSON at position 0
DevTools failed to load source map: Could not parse content for https://chordbook.app/assets/vendor.cc1db10b.js.map: Unexpected token < in JSON at position 0
DevTools failed to load source map: Could not parse content for https://chordbook.app/assets/DiscoverView.444da593.js.map: Unexpected token < in JSON at position 0
DevTools failed to load source map: Could not parse content for https://chordbook.app/assets/DataSource.d785a46b.js.map: Unexpected token < in JSON at position 0
DevTools failed to load source map: Could not parse content for https://chordbook.app/assets/swipe-back.2c2a8de0.js.map: Unexpected token < in JSON at position 0
DevTools failed to load source map: Could not parse content for https://chordbook.app/assets/tap-click.f2fe236c.js.map: Unexpected token < in JSON at position 0
Currently the toggle to show chords shows both Guitar and Ukulele chords. Allow selecting instrument and decided which to show (still allow both though)
Settings bar above each song is currently just icons. Add tooltips that explain what each button is on hover/touch
Generate sitemap.xml for all all public content
by title/artist/popularity
When using {artist: Artist Name}
in a songsheet it will be automatically matched to an existing artist. It currently uses Trigram matching against existing artists, giving preference to verified
artists (with external metadata)
LookupMetadata
job to see if it's a new artist that is knownEach user should get a profile page that shows recent activity, including contributions, setlists, library, etc.
There are decent tests for the Rails backend, but the frontend currently has no tests because I was quickly evolving the stack and didn't want to take time to maintain tests 🤠. (There is an old system test for the editor, but it no longer runs after migrating to ionic in #81.)
It'd be great to add a few different types of tests to cover the frontend:
Currently app hows not indication when activity is happening
app/frontend/views/*ListView.vue
app/frontend/views/*DetailView.vue
client or
DataSource`I don't personally find it useful, but other guitar tab websites have an autoscroll feature.
Require login for new/edit, and start adding personalization
by title/artist/lyrics
In the interest of consistency across songsheets, it would be great to add some kind of chordpro linter. Off the top of my head, here are just a few rules the linter could have, but there are probably a lot more.
{t: Foo}
=> {title: Foo}
)title
, subtitle
, artist
, album
, key
, tempo
, start_of_verse
, etc){start_of_verse}
/{start_of_chorus}
instead of {comment: Verse 1}
{link: https://youtube.com/…}
The linter should probably be written in JavaScript since it needs to run in the editor on the client. It would probably make sense to use the parser in ChordSheetJS as the basis for the linter so syntax support is consistent.
Prints of the song sheets should look beautiful
The app is currently set up as a Progressive Web App (PWA) with a service worker work offline (static assets/images are cached), but it doesn't quite work yet.
Here are a few suggested changes:
A handful of the existing imported songsheets have parser errors and just show a blank page when viewing them. It should either show a generic error message with a link to edit, or just redirect to edit and show parse errors there.
Add buttons to settings bar in song that allows transposing up/down.
A couple libraries that may be helpful:
Long pressing on any item in a list should show the ⋮
context menu for that item.
Add a chordpro-optimized editor to make it quick and easy to add new songs
I evaluated several existing web-based editors, and here are some thoughts:
Add buttons to settings bar to allow increasing/decreasing font size
cc #117
Given a song title and artist, we should be able to look up metadata and lyrics. Here are a few APIs that could be used:
Currently you have to toggle on/off for all chords. You should just be able to touch/hover a specific chord to show the diagram.
Native iOS app can be built with:
ionic build --prod
npx cap sync
ionic capacitor open ios
Ideally the app would already have a library of guitar chords. I couldn't find a lot from doing some quick googling, but there are a couple:
I haven't tested this since #230, so it may be less of an issue now that fuzzy search on artists is improved, but it likely still will happen in some cases.
Steps to reproduce:
{artist: Florence and The Machine}
(and
instead of +
)AssociateSongsheetMetadata
job will create a new artist if the name is different enoughLookupMetadata
job runs and renames new artist to Florence + The Machine
, thus creating a duplicateSolution is probably to have LookupMetadata
job look for existing artists matching the canonical name.
pg_search was originally used for search, but there were significant performance issues. #230 replaced most uses with searchkick + elasticsearch, but there is one remaining instance in Track.title_like
method that needs to be ported over.
pg_search_scope :title_like
on the Track
model should be replaced with a call to the search
method provided by searchkick. See Artlist.lookup
for an example. After that is removed, the pg_search
gem can be removed.
Add a built-in tuner. Something like this: https://github.com/qiuxiang/tuner
Thea ability to quickly play the song
Related to #323, the editor currently does not show parse errors.
#108 adds a menu to switch between versions of the same song, but there is much room for improvement:
The app currently hotlinks to thumbnails on theaudiodb.com. This means if they have an outage or are slow, it makes the app feel slow. The service worker is configured to serve images out of cache before making a network request, so subsequent requests for the same thumbnail will be fast, but it would still be good to store them locally.
All lists (artists, albums, tracks, songsheets) should be sortable by:
Depends on #13
A user can save any songsheet, track, artist, or album to their library.
To prevent the proliferation of versions (e.g. ver1, ver2…ver8, ver9, etc), a user can suggest changes to an existing songsheet, and there should be mechanisms to make those changes part of the existing songsheet.
MUST:
SHOULD:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.