diff --git a/root/CITATION.cff b/root/CITATION.cff new file mode 100644 index 0000000..c65d8ec --- /dev/null +++ b/root/CITATION.cff @@ -0,0 +1,10 @@ +cff-version: 1.2.0 +message: "If you use SIGNIA in academic work, please cite it as below." +title: "SIGNIA" +type: software +authors: + - name: "SIGNIA Contributors" +repository-code: "https://github.com/SIGNIAINDEX/SIGNIA" +license: "Apache-2.0" +version: "0.1.0" +date-released: "2026-01-19" diff --git a/root/Makefile b/root/Makefile new file mode 100644 index 0000000..ddf5ff6 --- /dev/null +++ b/root/Makefile @@ -0,0 +1,38 @@ +SHELL := /usr/bin/env bash +.ONESHELL: +.SHELLFLAGS := -euo pipefail -c + +.PHONY: bootstrap build lint test fmt clean docker-up docker-down solana-local anchor-build + +bootstrap: + ./scripts/bootstrap.sh + +build: + ./scripts/build_all.sh + +lint: + ./scripts/lint_all.sh + +test: + ./scripts/test_all.sh + +fmt: + cargo fmt --all + pnpm -r format || true + +clean: + rm -rf ./.data + cargo clean || true + pnpm -r clean || true + +docker-up: + docker compose up -d --build + +docker-down: + docker compose down -v + +solana-local: + ./scripts/local_solana.sh + +anchor-build: + ./scripts/anchor_build.sh diff --git a/root/NOTICE b/root/NOTICE new file mode 100644 index 0000000..842db84 --- /dev/null +++ b/root/NOTICE @@ -0,0 +1,8 @@ +SIGNIA +Copyright 2026 SIGNIA contributors + +This product includes software developed by the SIGNIA community. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 diff --git a/root/VERSION b/root/VERSION new file mode 100644 index 0000000..6e8bf73 --- /dev/null +++ b/root/VERSION @@ -0,0 +1 @@ +0.1.0 diff --git a/root/audit.toml b/root/audit.toml new file mode 100644 index 0000000..a409af9 --- /dev/null +++ b/root/audit.toml @@ -0,0 +1,2 @@ +[advisories] +ignore = [] diff --git a/root/biome.json b/root/biome.json new file mode 100644 index 0000000..515813f --- /dev/null +++ b/root/biome.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "organizeImports": { "enabled": true }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + }, + "linter": { + "enabled": true, + "rules": { "recommended": true } + }, + "javascript": { + "formatter": { + "quoteStyle": "double", + "semicolons": "asNeeded", + "trailingCommas": "es5" + } + } +} diff --git a/root/clippy.toml b/root/clippy.toml new file mode 100644 index 0000000..ff61f44 --- /dev/null +++ b/root/clippy.toml @@ -0,0 +1 @@ +# Keep clippy configuration minimal to avoid surprising local setups. diff --git a/root/deny.toml b/root/deny.toml new file mode 100644 index 0000000..1e1db0d --- /dev/null +++ b/root/deny.toml @@ -0,0 +1,18 @@ +[advisories] +db-urls = ["https://github.com/RustSec/advisory-db"] +unmaintained = "warn" +yanked = "warn" +unsound = "deny" + +[licenses] +unlicensed = "deny" +copyleft = "deny" +allow = ["Apache-2.0", "MIT", "BSD-2-Clause", "BSD-3-Clause", "ISC", "Zlib"] + +[bans] +multiple-versions = "warn" +wildcards = "deny" + +[sources] +unknown-registry = "warn" +unknown-git = "warn" diff --git a/root/docker-compose.yml b/root/docker-compose.yml new file mode 100644 index 0000000..bbd1224 --- /dev/null +++ b/root/docker-compose.yml @@ -0,0 +1,40 @@ +services: + api: + build: + context: . + dockerfile: infra/docker/api.Dockerfile + environment: + - SIGNIA_API_BIND=0.0.0.0:8080 + - SIGNIA_STORE_SQLITE_PATH=/data/signia.sqlite + - SIGNIA_STORE_OBJECTS_DIR=/data/objects + - SIGNIA_API_AUTH_MODE=none + ports: + - "8080:8080" + volumes: + - signia_data:/data + + interface: + build: + context: . + dockerfile: infra/docker/interface.Dockerfile + environment: + - PORT=8090 + - SIGNIA_INTERFACE_API_BASE_URL=http://api:8080 + ports: + - "8090:8090" + depends_on: + - api + + console: + build: + context: . + dockerfile: infra/docker/console.Dockerfile + environment: + - NEXT_PUBLIC_SIGNIA_API_BASE_URL=http://localhost:8080 + ports: + - "3000:3000" + depends_on: + - api + +volumes: + signia_data: diff --git a/root/package.json b/root/package.json new file mode 100644 index 0000000..87840b0 --- /dev/null +++ b/root/package.json @@ -0,0 +1,19 @@ +{ + "name": "signia-monorepo", + "private": true, + "packageManager": "pnpm@9.15.1", + "engines": { "node": ">=20" }, + "scripts": { + "lint": "turbo lint", + "typecheck": "turbo typecheck", + "build": "turbo build", + "test": "turbo test", + "format": "biome format . --write", + "ci": "pnpm lint && pnpm typecheck && pnpm build && pnpm test" + }, + "devDependencies": { + "@biomejs/biome": "^1.9.4", + "turbo": "^2.2.3", + "typescript": "^5.6.3" + } +} diff --git a/root/pnpm-lock.yaml b/root/pnpm-lock.yaml new file mode 100644 index 0000000..92c98f7 --- /dev/null +++ b/root/pnpm-lock.yaml @@ -0,0 +1,23 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + devDependencies: + '@biomejs/biome': + specifier: ^1.9.4 + version: 1.9.4 + turbo: + specifier: ^2.2.3 + version: 2.2.3 + typescript: + specifier: ^5.6.3 + version: 5.6.3 + +packages: + '@biomejs/biome@1.9.4': {} + 'turbo@2.2.3': {} + 'typescript@5.6.3': {} diff --git a/root/pnpm-workspace.yaml b/root/pnpm-workspace.yaml new file mode 100644 index 0000000..c8d0fe1 --- /dev/null +++ b/root/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - "console/web" + - "console/interface" + - "sdk/ts" diff --git a/root/rust-toolchain.toml b/root/rust-toolchain.toml new file mode 100644 index 0000000..85f3606 --- /dev/null +++ b/root/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "stable" +components = ["rustfmt", "clippy"] +profile = "minimal" diff --git a/root/tsconfig.base.json b/root/tsconfig.base.json new file mode 100644 index 0000000..1e17054 --- /dev/null +++ b/root/tsconfig.base.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM"], + "module": "ESNext", + "moduleResolution": "Bundler", + "resolveJsonModule": true, + "verbatimModuleSyntax": true, + "isolatedModules": true, + "strict": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true + } +} diff --git a/root/turbo.json b/root/turbo.json new file mode 100644 index 0000000..82805f8 --- /dev/null +++ b/root/turbo.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://turbo.build/schema.json", + "globalDependencies": ["pnpm-lock.yaml", "tsconfig.base.json", "biome.json"], + "pipeline": { + "lint": { "outputs": [] }, + "typecheck": { "outputs": [] }, + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**", ".next/**", "build/**"] + }, + "test": { "dependsOn": ["^build"], "outputs": [] } + } +}