Flat is an Open-source web-based collaborative music score editor.
Tested with Node v0.11 (https://travis-ci.org/FlatIO/flat). Works on Linux, MacOS and Windows.
- Installation
- Project architecture
- REST API specifications
- Database architecture
- Team
- Contributors
- Licence
$ npm install flat.io && cd node_modules/flat.io
$ npm install -g grunt-cli && grunt
You can configure the application using the configurations files stored in /config
(node-config).
- express: Runs the HTTP server, handles two applications:
/
and/api
; - node-swagger: The server-side is mainly based on a REST API based on Node Swagger (see REST API specifications) ;
- jugglingdb: The database API, tested with CouchDB and MySQL ;
- passport: Authentication ;
- node-git: Versioning of the music scores ;
- flat-musicjson: The conversion library from MusicXML to a JSON format and inverse ;
- flat-fermata: The render library from a MusicJSON format using Vexflow.
You might want to build assets using grunt-fontsmish and grunt-svgmin (npm packages are available).
The client side is designed into three AngularJS applications: the authentication, the dashboard and the editor.
The editor uses fermata too, the library code is shared between the client and the server (designed to render PDF scores in the future).
# REST APIWill be added soon, you can show the specifications using a swagger-ui (e.g. dev.flat.io).
# Database architectureModels used in the project (see /schemas/index.js for more details).
username
email
password
: The password in bcryptregistrationDate
follower
followed
date
sid
: The storage identitifer (the git repository name)title
: The score titlepublic
: True if the score is publicuserId
The different collaborators of a score.
aclWrite
: True if the user has write rightsaclAdmin
: True if the user has admin rightsscoreId
userId
The activity of the users.
event
: The event name (a i18next key)parameters
: A JSON of the parameters of the news string (e.g. a title, score, user, ...)date
userId
The news feed of the users.
newsId
userId
- @gierschv : Project manager and lead developer ;
- @rannoup : Database Architect, developper ;
- @cyrilcoutelier: Fermata / editor developer
- @corentingurtner: Fermata / editor developer
- @vbouchaud: developer
Flat is freely distributable under the terms of the GPLv3 license.
Flat
Copyright (C) 2013 Flat team <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.