History of the development of the Application - Alna132/GO-Group-Web-App GitHub Wiki
Starting up:
- Started off by installing GO on all team member's machines. Set up GoPath to install Macaron package.
To set up the go path you go into your "Advanced System Settings" on your machine and choose "Environment Variables" like so:

Next you choose where on your machine you want your GoPath (must be set to get, build and install packages outside the standard Go tree) to be set up:

Then you can set up your Go Root (directory where you installed golang):
![]()
Features we considered, Issues we had and interesting things we found out as a result:
- We installed Macaron using Visual Studio Code. Set up the path to execute code using CMDER command line. We tried out a template for Macaron in Visual Studio Code called "main" using the GET method to return a string on the port 4000. Once the port was opened on Cmder using the command "go run main.go" we were able to go to the url http://localhost:4000/ and see our displayed string.
- Downloaded Redis 3.0, couldn't get that working for Windows. Found an earlier version (Redis 2.8.19) and then got the Client and the Server running correctly. Tried out the tutorial on http://try.redis.io/ and got an understanding of how to use the Redis Database.
- We had an issue with using Reddis and refactored the project idea to include SQL instead using PHP and Azure.
- We tried using PHP MyAdmin to set up PHP scripts to talk to our main.go file but after running into difficulty here we ended up finding it easier to use MySQL Workbench to communicate with our .go file.
- We thought that we might use PHP through Wamp, so we installed that on our Virtual machine. Now, installing Wamp on a VM is isn't as straight-forward as downloading it to your Local Machine. The Virtual Machine has no pre-installed componants like a Local Machine would have so we ended up getting this error:

We were told we needed to download Microsoft Visual C++ redistributables but after downloading these we still got errors but our Wamp Icon turned Orange.
In the end we literally had to search for the .dll file itself and install the 64 bit .dll file into the System32 folder within Program Files on the VM and a 32 bit .dll file had to be put into the Syswow64 folder. It eventually turned green.

6.While we may not have used Wamp in the end, we still found out interesting details on how to install it in different environments. For example, on my own Local Machine I couldn't actually get Wamp to activate as I had Skype. Now Skype works on the Port 80 and so does Wamp! I actually had to go into the settings of Skype and take it off the port 80 and then Wamp worked:

Method we finally decided upon:
We also considered using a hand-typed SQL text file. We were going to put this file onto a virtual machine on Azure and access it from there. After some research, and discussion with a friend in industry, we found a more efficient and graphical way to store our information. We downloaded MySQL Workbench which asks for credentials from a server.
After typing in these credentials we created our tables within Workbench. Now our Main.go file inserts users into this database every time a user signs up to the WorkTracker website like so:
/Main function
func main() {
//Open an sql connection, and handle errors,
// The database is mysql, then we have the username of the server on Azure (b71da173aea4cf)
// (05606ea1)
//TCP stands for Transmission Control Protocol which is a set of networking protocols that allows
// two or more computers to communicate
// (eu-cdbr-azure-west-a.cloudapp.net)
// Port Name on Azure (3306)
// The name of the database (godatabase)
db, err = sql.Open("mysql", "b71da173aea4cf:05606ea1@tcp(eu-cdbr-azure-west-a.cloudapp.net:3306)/godatabase")
//If there are errors connecting to the server
if err != nil {
//output a panic error
panic(err.Error())
}
//close the connection to the database
defer db.Close()
//Checking is the connection to the database still alive
err = db.Ping()
//otherwise painic
if err != nil {
panic(err.Error())
}