Core is a Web3 Framework, written in Go using Wails.io to replace Electron and the bloat of browsers that, at their core, still live in their mum's basement.
More to come, follow us on Discord http://discord.dappco.re
Repo: https://github.com/Snider/Core
import core "github.com/Snider/Core"
app := core.New(
core.WithServiceLock(),
)This project follows a Test-Driven Development (TDD) approach. We use Task for task automation to streamline the development process.
The recommended workflow is:
-
Generate Tests: For any changes to the public API, first generate the necessary test stubs.
task test-gen
-
Run Tests (and watch them fail): Verify that the new tests fail as expected.
task test -
Implement Your Feature: Write the code to make the tests pass.
-
Run Tests Again: Ensure all tests now pass.
task test -
Submit for Review: Once your changes are complete and tests are passing, submit them for a CodeRabbit review.
task review
The project is organized into the following main directories:
pkg/: Contains the core Go packages that make up the framework.cmd/: Contains the entry points for the two main applications:core-gui/: The Wails-based GUI application.core/: The command-line interface (CLI) application.
To run the GUI application in development mode:
task gui:devTo build the final application for your platform:
task gui:buildTo build the CLI application:
task cli:buildThe executable will be located in the cmd/core/bin directory.
To run any of the following tasks, open your terminal in the project's root directory and execute the task command.
task test: Runs all Go tests recursively for the entire project.task test-gen: Generates tests for the public API.task check: A comprehensive check that runsgo mod tidy, the full test suite, and a CodeRabbit review.task review: Submits the current changes for a CodeRabbit review.task cov: Generates a test coverage profile (coverage.txt).task cov-view: Opens the HTML coverage report in your browser.task sync: Updates the public API Go files to match the exported interface of the modules.
These tasks are run from the root directory and operate on the GUI application.
task gui:build: Builds the GUI application.task gui:package: Packages a production build of the GUI application.task gui:run: Runs the GUI application.task gui:dev: Runs the GUI application in development mode, with hot-reloading enabled.
These tasks are run from the root directory and operate on the CLI application.
task cli:build: Builds the CLI application.task cli:build:dev: Builds the CLI application for development.task cli:run: Builds and runs the CLI application.task cli:sync: Updates the public API Go files.task cli:test-gen: Generates tests for the public API.
The documentation site is powered by MkDocs Material and lives under docs/ with configuration in mkdocs.yml.
- Install docs tooling:
pip install -r docs/requirements.txt
- Live preview from repository root:
mkdocs serve -o -c
- Build static site:
mkdocs build --clean
This repo includes a minimal GoReleaser config (.goreleaser.yaml). Tagged pushes like v1.2.3 will build and publish archives via GitHub Actions (see .github/workflows/release.yml).
- Local dry run:
goreleaser release --snapshot --clean - Real release: create and push a version tag
vX.Y.Z.
This repository uses Go workspaces (go.work) targeting Go 1.25.
- Add/remove modules with
go work use. - Typical workflow:
go work syncgo mod tidyin modules as needed