Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tugascript/kiwiscript
Video Lectures Link Sharing
https://github.com/tugascript/kiwiscript
Last synced: about 2 months ago
JSON representation
Video Lectures Link Sharing
- Host: GitHub
- URL: https://github.com/tugascript/kiwiscript
- Owner: tugascript
- License: gpl-3.0
- Created: 2024-06-29T04:24:26.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-10-17T05:27:13.000Z (3 months ago)
- Last Synced: 2024-10-19T07:45:44.367Z (3 months ago)
- Language: Go
- Size: 25.6 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kiwiscript
An online video sharing platform for teaching and learning coding and programming languages.
## Structure
- **Back-end**: go with Fiber and SQLC.
- **Front-end**: rust with leptos and Actix-Web.### Back-end
The back-end is written in Go using the Fiber framework, and follows a MSC (Model-Service-Controller) pattern. The database is managed using SQLC.
The API is RESTful and follows the [expired Hypertext Application Language (HAL) Internet-Draft](https://datatracker.ietf.org/doc/draft-kelly-json-hal/).
### File Structure
Our project is divided into go packages with the following structure:
```md
├─── app
│ app.go
│ config.go
│ logger.go
│ validator.go
├─── controllers
│ controllers.go
│ helpers.go
│ middleware.go
│ *.controller.go
├─── dtos
│ dtos.go
│ bodies.go
│ query_params.go
│ responses.go
│ *.dto.go
├─── exceptions
│ controller_exceptions.go
│ service_exceptions.go
├─── paths
│ paths.go
├─── providers
│ ├─── cache
│ │ cache.go
│ │ *.go
│ ├─── database
│ │ ├─── migrations
│ │ │ *.down.sql
│ │ │ *.up.sql
│ │ ├─── queries
│ │ │ *.sql
│ │ database.go
│ │ db.go
│ │ models.go
│ │ *.model.go
│ │ *.sql.go
│ │ email.go
│ │ *.go
│ ├─── oauth
│ │ oauth.go
│ │ *.go
│ ├─── object_storage
│ │ object_storage.go
│ │ *.go
│ ├─── tokens
│ │ tokens.go
│ │ *.go
├─── routers
│ routers.go
│ *.router.go
├─── services
│ services.go
│ helpers.go
│ *.service.go
├─── utils
│ utils.go
│ *.go
├─── test
│ ├─── fixtures
│ │ *.pdf/jpeg/...
│ common_test.go
│ *_e2e_test.go
```### Database Model
TODO
### Local Setup
1. Cd into the `kiwiscript_go` directory.
2. Install Go.
3. Copy the `.env.example` file to `.env` and fill in the required environment variables.
4. Generate the JWT keys using the following command:```bash
make keygen
```5. Start DB, Cache and S3 services with Docker-Compose or Podman-Compose.
```bash
# For Docker
make dc-up
# For Podman
make pm-up
```6. Create the database.
```bash
# For Docker
make create-db
# For Podman
make create-pm-db
```7. Install go-migrate and run the migrations.
```bash
make migrate-up
```8. Run the server.
```bash
make dev
```### Testing
1. Cd into the `kiwiscript_go` directory.
2. Start DB, Cache and S3 services with Docker-Compose or Podman-Compose.```bash
# For Docker
make dc-up
# For Podman
make pm-up
```3. Create the test database.
```bash
# For Docker
make create-test-db
# For Podman
make create-pm-test-db
```4. Run migrations for the test database.
```bash
make migrate-test-up
```5. Run the tests.
```bash
make test
```### Deployment
TODO
## Front-end
TODO
## License
The code of this project is licensed under the Gnu General Public License v3.0. You can find the license [here](LICENSE).