Voogle is an open source project, maintained by Sogilis, that implements good pratices in cloud native application development, with a high degree of cybersecurity requirements.
For now, Voogle consists in a micro-service broadcasting and sharing video streams application. It is also used as a demonstration medium for the SquareScale platform.
Docker
Docker Compose
Makefile
Act 0.2.25
Github action local
protoc libprotoc 3.12.4
git-lfs
Go 1.18
Golangci-lint 1.29
(https://github.com/golangci/golangci-lint-action)
Node 16.13.1
Npm 8.3.0
To start Voogle on your machine, you need services (for now): webapp, api, encoder, gray-server-transformer, flip-server-transformer, a S3-like, a Rabbitmq and a Mariadb.
You don't have to set manually S3_HOST
unless you know what you are doing.
.env.template
file or use the make generate-env-file
command.make start_all_services
.docker-compose-external.yml
file9000
and the console one the port 9001
.5672
and the console one the port 15672
.exec -it <mariadb_container_id> mysql -u root -p
docker-compose-internal.yml
file.make start_all_services_and_observability
/src/webapp
) with npm run serve
to start the VueJS development server..env
file as USER_AUTH and PWD_AUTH environment variables..env
file.make start_external_services
. Then, you can launch each internal services (means API, encoder, gray-server-transformer, flip-server-transformer) from src/
with the make run-dev-<service_name>
(example: make run-dev-api
).make stop_services
apt install protobuf-compiler
dnf install protoc-gen-go
go get -u github.com/swaggo/swag/cmd/swag
go get -u github.com/swaggo/http-swagger
go get -u github.com/alecthomas/template
cd src/cmd/api/
swag init -g main.go
or make generate-docs
We use GitHub Pages to display our documentation. Before merging, please rebase on main and ensure the files are up to date using the above commands. Once the merge request is accepted, you can access https://sogilis.github.io/Voogle/ to check the documentation.
.vscode/setting.json
{
"go.useLanguageServer": true,
"gopls": {
"experimentalWorkspaceModule": true
}
}