This project features a series of Go applications, with a primary focus on developing a comprehensive Web App. The development is structured in stages, starting with some exercises, followed by a command-line interface (CLI) app and culminating in a fully functional web application. The run.sh script helps you execute different parts of the project.
To use the run.sh script, execute:
./run.sh [command]
-
Create a program using a variadic function to print a list of 10 things To Do. [Variadic Functions][Structures]
-
Create a program to output a list of 10 things To Do in JSON format. [Variadic Functions][Structures][JSON]
-
Create a program using a variadic function to output a list of 10 things To Do to a JSON format file. [Variadic Functions][Structures][JSON]
-
Create a console program to read a list of 10 things To Do from a JSON format file and display. [Variadic Functions][Structures][JSON]
-
Create a program that prints a list of things To Do and the current status of the To Do item using two goroutines which alternate between To Do Items and To Do statuses.[Concurrency][Waitgroups][Workerpools][Mutexes]
Note: Start with the concurrency exercises to get a better understanding of how to use goroutines for this task.
Run the exercises:
./run.sh exercises
- Write a program to simulate a race condition occurring when one goroutine updates a data variable with odd numbers, while another updates the same data variable with even numbers. After each update , attempt to display the data contained in the data variable to screen. [Goroutines][Concurrency][Race Conditions]
- Refactor the program created in the previous exercise to use channels, mutexes to synchronise all actions. [Concurrency][Waitgroups][Workerpools][Mutexes]
Run the concurrency exercises:
./run.sh concurrency-exercises
This extends the topics covered in "Exercises" to complete the build of a To Do list application.
- Create a command line app to manage a To Do list stored in memory. This should enable a user to perform Create, Read, Update, and Delete operations on a list of To Do items. The list should contain a To Do item and a To Do status. [Structures][Arrays][Variadic Functions]
Run the cli app:
./run.sh cli-app
- Convert the command line app into web page app to manage To Do list stored in memory. [Structures][Arrays][Variadic functions][Keyboard Input][Interfaces]
- Remote Commands - Create a server that can concurrently receive a list of pre-defined commands, The status of the server and the status of each task should be available via specific commands. [Concurrency][Goroutines] [Channels]
- Extend to a web API to receive web page actions [Remote Commands] that are applied to To Do list stored in memory.[File Server][Web API][Interfaces][Http]
Start the web app:
./run.sh webapp
For more information, refer to the web app documentation.
The stretch goals integrate a traditional database and focus on concurrent user interactions.
- Extend web API to receive web page actions [Remote Commands] that are applied to To Do list which is stored to a database table. [Concurrency] [Goroutines] [Channels] [Mutexes][Interfaces][Http][Databases]
- Extend the Web API to receives actions [Remote Commands] to be applied to the To Do application list from multiple users. All actions to be applied to the database tables for each user. [Concurrency][Goroutines][Channels] [Mutexes][Interfaces][Databases]