At MakeICT, we have gotten tired of fighting with our current system for managing members and events. Lack of features, lack of support, broken API's, the list goes on. So we've decided to make a better system, since we're makers and all. This will give us the access we need to our users and events, and give us opportunities to implement new features like equipment management and to work with new developers. We are in the very first stages of this project, so if you would like to be involved but don't have a lot of experience, now is a great time. Wee need developers at all levels, front end, back end, user experience, database, API and more.
The first steps are to get something minimal that can begin to take the place of the current system used by MakeICT. In brief, that means it will need to be a web-based system that allows us to create events, reserve space, and allow users to register for those events. We also would like to give users some more control over the profiles and data registered in the system, and give administrators more tools for reporting usage and metrics. We have also decided to continue supporting those who wish to pay for classes and membership dues via cash or check, so we will need at least a minimal invoicing system at the start. For a more complete list of features, including future wishes, check out the Google Doc.
We also hope to make this project about a lot more than just MakeICT. We feel that every makerspace could use a good management tool for free. We'd like to keep in mind a design philosophy that makes it easy for other organizations to deploy, customize, and extend this platform.
You can join the discussion on Slack, or come to a scheduled meeting. Check out devICT's home page for information on joining Slack and for joining the Meetup for event notifications.
Our current design mockups are on NinjaMock. Check them out to see the direction we are taking, especially if you would like to help with the front-end development.
The list of requirements for the software is in this Google Doc.
//TODO Expand this with getting started resources for the different technologies used in this project.
Contributions are welcome, you can start by reading this section for some of the best practices and methods for managing this project. Next, check the projects or issues for something that interests you, or that you have skills that you could offer. When you find something, see if there is a branch for that feature or bug, if not make a new one.
We are currently building the server backend in Go (1.7.3), the frontend with Material.io, and using PostgreSQL (9.3) for storage. Various other libraries may be used, but those will be explained in the comments in the files that use them.
Check the projects or issues to find something you want to work on. Then, check the branches to see if someone is already working on it. If they are, you can join that branch, or if not, you will need to create a new branch. More information on the git Feature Branch workflow can be found in this tutorial by Atlassian. It also has a very good beginners guide to using Git if you never have before. After you have worked on your feature and have it working you can submit a pull request and after your code is reviewed it will be merged into the main branch.
At this time, with very little written in the way of code or tests, the plan is to use acceptance testing to make sure that routes, validation, server responses, etc are working. Unit tests may be used in some cases to prove that specific bugs are fixed and prevent regression.
Cloud9 has PostgreSQL, Git, and Go already set up and is a workable Go IDE, so it's easy for someone new to Go or software development to use for getting started. This guide does assume you are familiar with git, and creating and navigating directories on Linux.
bin
, pkg
, and src
for your compiled binaries, compiled libraries, and source code respectively. These are the folders that Go expects by default.$GOPATH
is set up automatically, but you can type c9 open ~/.profile
and add this at the end of the file to make running binaries easier.
export PATH=$PATH:$GOPATH/bin
echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-10
Choose keep local cluster configuration when asked
sudo pg_dropcluster --stop 10 main
sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main
.profile
add the following to automatically run the PostgreSQL server: You will have to close and reopen the terminal for these to take effect.
function checkstart {
service=$1
if [[ ! $(ps -ef | grep -v grep | grep "$service" | wc -l) > 0 ]]
then
sudo service $service start &
fi
}
checkstart postgresql
psql
and then
CREATE ROLE <username> WITH LOGIN PASSWORD ‘<password>’ CREATEDB;
CREATE DATABASE <database> OWNER <username>;
src/github.com/makeict/MESSforMakers
and change to that folder.
From the folder, run git clone https://github.com/MakeICT/MESSforMakers.git
go get github.com/jmoiron/sqlx github.com/gorilla/sessions github.com/gorilla/mux github.com/justinas/alice github.com/lib/pq
go get
that librarycd ~/workspace/src/github.com/makeict/MESSforMakers/sql
./reload.sh <postgres username>
config.json
and setting the username, password, and database to whatever you chose earlier, and the host and port to localhost
and 5432
. Make sure that the port is not in quotes. It must be an integer, not a string or the server will panic at runtime trying to connect to the database.go install
and then MESSforMakers
and the server should run. You can then click the “Preview” button at the top of the editor to see the application running in a browser window.