Clip audio from Youtube.
Go to file
Rob Watson 176a1cd8c1 Revert "FileStore.PutObject: Accept io.ReadCloser"
This turned out to actually make testing more difficult, as the
FileStore objects are generally mocked themselves and moving the Close()
call inside them introduced IO problems in the test suite.

This reverts commit a063f85eca.
2022-01-03 13:32:39 +01:00
backend Revert "FileStore.PutObject: Accept io.ReadCloser" 2022-01-03 13:32:39 +01:00
frontend Update README to include testing information 2022-01-01 17:30:48 -06:00
proto Add GetAudioSegment flow 2021-12-29 16:41:43 +01:00
.dockerignore Add Dockerfile and staging deployment setup 2021-11-27 14:26:14 +01:00
.drone.yml Add frontend build step to CI 2021-12-30 08:14:41 +00:00
.gitignore Add FileSystemStore file store 2021-12-08 20:58:13 +01:00
Dockerfile Rename HTTP base path to HTTP root 2021-12-09 03:38:38 +01:00
LICENSE Add README and LICENSE files 2021-12-04 06:26:30 +01:00
README.md README.md: Add Drone badge 2021-12-12 19:03:51 +01:00
deploy.sh Frontend fixes 2021-12-02 15:55:14 +01:00
protogen.sh More progress 2021-11-21 16:09:30 +01:00

README.md

Clipper

Build Status

Clipper is a Youtube audio clipper developed using modern web technologies.

  • Go
  • protobuf, grpc-web
  • Typescript
  • React

It is currently in early development.

Development

Dependencies

It is required that an ffmpeg binary is available in the current path.

Running the app

The backend requires configuration via environment variables - see backend/.env.example. All variables must be set unless they are marked as optional.

Then, the server can be started with:

cd backend/
go run cmd/clipper/main.go

The frontend can be launched on localhost:3000 with:

cd frontend/
yarn start

Code generation

To regenerate protobuf code and GRPC stubs, first install protoc and the GRPC dependencies:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

Then generate the code with:

./protogen.sh

To regenerate the database access layer, first install sqlc. New queries can be added to backend/sql/queries.sql, and code regenerated with:

cd backend/
sqlc generate

Mocks require mockery to be installed, and can be regenerated with:

go generate ./...

Migrations

Database migrations require golang-migrate.

go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest

Migrations then can be run with:

cd backend/
migrate -path sql/migrations -database $DATABASE_URL up