Skip to content

silly-portugeese/Go-To-Do-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

To Do Application

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.

Usage

To use the run.sh script, execute:

./run.sh [command]

Exercises

  • 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

Concurrency 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

CLI app

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

Web 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.

Stretch Goals

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]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published