Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
859 commits
Select commit Hold shift + click to select a range
ecda95d
Finish DAO proposals backend wiring
iammrjude Mar 28, 2026
824ad43
Merge branch 'main' into feat/430-connect-dao-proposals-backend
iammrjude Mar 28, 2026
689fea3
Merge branch 'main' into feat/434-delete-proposal-endpoint
iammrjude Mar 28, 2026
b5bd5b7
Fix DAO end-to-end coverage
iammrjude Mar 28, 2026
3c6d21e
Merge branch 'feat/430-connect-dao-proposals-backend' into feat/434-d…
iammrjude Mar 28, 2026
855df69
Merge pull request #496 from iammrjude/feat/430-connect-dao-proposals…
Anuoluwapo25 Mar 28, 2026
92b704d
Merge pull request #497 from iammrjude/feat/434-delete-proposal-endpoint
Anuoluwapo25 Mar 28, 2026
8c77d97
feat(treasury): add execute_proposal, cancel_proposal, configurable q…
pope-h Mar 29, 2026
e860f84
feat(governance): emit events for mint, transfer, transfer_from, approve
pope-h Mar 29, 2026
f955a6f
fix: remove production debug statements (#507)
edehvictor Mar 29, 2026
144f09a
fix: replace placeholder lesson curriculum (#506)
edehvictor Mar 29, 2026
8f32bef
fixed harddcoded api url for the leaderboard
sammajayi Mar 29, 2026
1a7e9da
fix: resolve lesson markdown syntax error
edehvictor Mar 29, 2026
5ac1813
fix: use real treasury activity in dashboard chart (#505)
edehvictor Mar 29, 2026
25889fc
test(fuzz): stabilize include-ignored fuzz suite
pope-h Mar 29, 2026
8a1eeb7
fix: submit donor deposits to treasury contract (#501)
edehvictor Mar 29, 2026
5bd0f62
fix(donor): call treasury contract from deposit more
edehvictor Mar 29, 2026
79d800d
fix(clippy): avoid len() > 0 check in course_milestone
pope-h Mar 29, 2026
1bd0417
ci: install clippy component for contracts workflow
pope-h Mar 29, 2026
25d1a3c
chore(types): add shared contract types and migrate hooks
Feyisara2108 Mar 29, 2026
9a16101
Require admin auth for reclaim_inactive (security fix) and document c…
Feyisara2108 Mar 29, 2026
419131c
fix: correct indentation in comments.routes.ts to pass Prettier check
AleKK31 Mar 29, 2026
2b5e1a6
milestone_escrow: emit EscrowCreated and EscrowReclaimed events; tests
Feyisara2108 Mar 29, 2026
462d662
types: use for re-exported contract types (isolatedModules)
Feyisara2108 Mar 29, 2026
dc2d3f1
Merge pull request #521 from edehvictor/fix/remove-console-debug-507
Anuoluwapo25 Mar 29, 2026
48fe09f
ci(contracts): pin rust 1.88 toolchain for clippy
pope-h Mar 29, 2026
f707a7f
Merge pull request #522 from edehvictor/fix/real-lesson-curriculum-506
Anuoluwapo25 Mar 29, 2026
e3f5b21
Fix contracts CI clippy install and rustfmt formatting
pope-h Mar 29, 2026
e750e94
email services
sammajayi Mar 29, 2026
60f1447
Merge pull request #520 from pope-h/feat/treasury-execute-cancel-quor…
Anuoluwapo25 Mar 29, 2026
68e4d2d
Merge pull request #524 from edehvictor/fix/real-treasury-chart-505
Anuoluwapo25 Mar 29, 2026
f11ffc7
Merge branch 'main' into fix/real-donor-deposit-501
Anuoluwapo25 Mar 29, 2026
8e16500
Merge pull request #525 from edehvictor/fix/real-donor-deposit-501
Anuoluwapo25 Mar 29, 2026
b3b96e6
Merge branch 'main' into codex/fix-deposit-more-contract-call-501
Anuoluwapo25 Mar 29, 2026
6c2e9a3
Merge pull request #526 from edehvictor/codex/fix-deposit-more-contra…
Anuoluwapo25 Mar 29, 2026
2f08a40
Merge pull request #498 from AleKK31/patch-1
Anuoluwapo25 Mar 29, 2026
97a53f6
Merge pull request #523 from sammajayi/fix/hardcoded-url
Anuoluwapo25 Mar 29, 2026
aad122d
Merge pull request #528 from Feyisara2108/feat/fix-reclaim-inactive-auth
Anuoluwapo25 Mar 29, 2026
344fecb
impelemented email notification using resend for milestone rejection …
sammajayi Mar 29, 2026
350f3f8
docs(#17): replace stub SECURITY.md with full security policy
Calebux Mar 29, 2026
ee249dd
keep
sammajayi Mar 29, 2026
64b5726
stash
sammajayi Mar 29, 2026
7b73cf6
Merge branch 'email-notification' into feat/empty-and-error-states
sammajayi Mar 29, 2026
fbe0025
Merge branch 'main' into credential
Nanle-code Mar 29, 2026
0b849e5
Merge pull request #464 from Nanle-code/credential
Anuoluwapo25 Mar 29, 2026
0c0b661
impelemented error and empty states
sammajayi Mar 29, 2026
8ebe2f8
build(deps): bump @creit.tech/stellar-wallets-kit from 1.9.5 to 2.0.1
dependabot[bot] Mar 29, 2026
7615357
build(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.0.1
dependabot[bot] Mar 29, 2026
db02c17
implemented scholarship treasure
Oluwatomilola Mar 29, 2026
2602afc
Merge branch 'main' into Implement-scholar
Oluwatomilola Mar 29, 2026
3d0bda4
feat: implement escrow events and update related modules
Feyisara2108 Mar 29, 2026
c338c2d
Adding nft platform
Timi16 Mar 29, 2026
04bd1d6
feat: resolve issues #515, #516, #517, #127
Uchechukwu-Ekezie Mar 29, 2026
2907a58
Adding tests
Timi16 Mar 29, 2026
a47e303
Merge pull request #539 from Oluwatomilola/Implement-scholar
Anuoluwapo25 Mar 29, 2026
7abdb6d
Adding tests
Timi16 Mar 29, 2026
193a002
Merge pull request #540 from chimav-90/feat/issues-515-516-517-127
Anuoluwapo25 Mar 29, 2026
502aff3
Merge pull request #531 from gidson5/fix/security-policy-17
Anuoluwapo25 Mar 29, 2026
542a615
Adding frontend fixes
Timi16 Mar 29, 2026
c212edc
Adding Lessonview
Timi16 Mar 29, 2026
7259cc2
Merge branch 'main' into feat/add-contract-types
Feyisara2108 Mar 29, 2026
e9da614
Merge pull request #499 from kehindefaith26/fix/scholar-nft-get-metad…
Anuoluwapo25 Mar 29, 2026
17a0593
Adding Lessonview
Timi16 Mar 29, 2026
32d4845
Adding history
Timi16 Mar 29, 2026
457978d
Merge branch 'main' into feat/add-escrow-events
Feyisara2108 Mar 29, 2026
9a9f2b7
Merge pull request #530 from sammajayi/email-notification
Anuoluwapo25 Mar 29, 2026
6bcf388
Merge pull request #536 from bakeronchain/dependabot/npm_and_yarn/cre…
Anuoluwapo25 Mar 29, 2026
6b2bc77
Merge pull request #538 from bakeronchain/dependabot/npm_and_yarn/vit…
Anuoluwapo25 Mar 29, 2026
ca60ee6
Merge pull request #529 from Feyisara2108/feat/add-escrow-events
Anuoluwapo25 Mar 29, 2026
61f20e9
Merge pull request #527 from Feyisara2108/feat/add-contract-types
Anuoluwapo25 Mar 29, 2026
8c4494b
Merge branch 'main' into feat-513-512-514-519
Timi16 Mar 29, 2026
4649e67
Merge pull request #541 from Timi16/feat-513-512-514-519
Anuoluwapo25 Mar 29, 2026
78b5c6c
feat: implement persistent theme toggle (clean v2)
iamTissan Mar 29, 2026
1ceafe9
feat: wire admin page to live contract state
Mar 29, 2026
7cff7aa
docs: add complete env example
Obiajulu-gif Mar 29, 2026
6b71bd4
Merge branch 'main' into chore/add-env-example-vars
Obiajulu-gif Mar 29, 2026
a518210
Add Soroban upgrade hooks to V1 contracts
Edoscoba Mar 29, 2026
45cb798
Resolve main branch rebase conflicts
Edoscoba Mar 29, 2026
db32d68
fix: resolve NavBar conflict and sync package-lock
iamTissan Mar 29, 2026
ca9ffc6
fix: resolve admin branch ci blockers
Mar 29, 2026
462b77d
fix: align ci lockfile and contract tests
Mar 29, 2026
5efff49
Merge branch 'main' into feat-admin-real-contract-state-500
Ryjen1 Mar 29, 2026
ba0e979
chore: sync healthy package-lock and fix motion-dom errors
iamTissan Mar 29, 2026
c1888c8
fix: manually resolve navbar and lockfile conflicts
iamTissan Mar 30, 2026
de7f832
fix: final manual conflict resolution and sync
iamTissan Mar 30, 2026
e1f3838
ci: update frontend-ci paths and force clean install
iamTissan Mar 30, 2026
aefc797
Merge branch 'main' into feat/theme-toggle-v2
iamTissan Mar 30, 2026
b61a2a0
Merge pull request #542 from Ryjen1/feat-admin-real-contract-state-500
Anuoluwapo25 Mar 30, 2026
bd64309
Merge pull request #543 from iamTissan/feat/theme-toggle-v2
Anuoluwapo25 Mar 30, 2026
484a503
Merge branch 'main' into feat/69-soroban-contract-upgrades
Anuoluwapo25 Mar 30, 2026
94b4d5d
fix(dao): add input validation feedback to DAO proposal form
OkeyAmy Mar 30, 2026
8d7d2b2
fix: fetch real scholar credentials instead of hardcoded placeholder …
OkeyAmy Mar 30, 2026
706aa30
docs: add build status, license, Stellar, and contributions badges to…
ogazboiz Mar 30, 2026
d988618
docs: replace Solidity/.sol references with Soroban/Rust equivalents
ogazboiz Mar 30, 2026
fe0cac2
ci: add .rustfmt.toml and document cargo fmt/clippy in README
ogazboiz Mar 30, 2026
9dc924f
feat(home): replace scaffold page with LearnVault landing page
ogazboiz Mar 30, 2026
a3a132c
Merge pull request #548 from playground-ogazboiz/feat/issue-113-readm…
Anuoluwapo25 Mar 30, 2026
66659f0
Merge pull request #549 from playground-ogazboiz/fix/issue-112-readme…
Anuoluwapo25 Mar 30, 2026
b6e79f2
Merge pull request #550 from playground-ogazboiz/feat/issue-126-cargo-ci
Anuoluwapo25 Mar 30, 2026
052fd20
Merge pull request #554 from playground-ogazboiz/feat/issue-108-landi…
Anuoluwapo25 Mar 30, 2026
ec76eb1
Merge pull request #547 from OkeyAmy/fix/profile-real-credentials
Anuoluwapo25 Mar 30, 2026
55508db
Merge pull request #545 from Edoscoba/feat/69-soroban-contract-upgrades
Anuoluwapo25 Mar 30, 2026
0f96473
Merge branch 'main' into feat/empty-and-error-states
Anuoluwapo25 Mar 30, 2026
bdea82d
Merge pull request #544 from Obiajulu-gif/chore/add-env-example-vars
Anuoluwapo25 Mar 30, 2026
9843876
totalpages and activepage are now returned on the frontend
sammajayi Mar 30, 2026
3ca1e3a
Merge branch 'main' into feat/empty-and-error-states
Anuoluwapo25 Mar 30, 2026
1758e33
Merge pull request #533 from sammajayi/feat/empty-and-error-states
Anuoluwapo25 Mar 30, 2026
4f1db73
Merge pull request #557 from sammajayi/governance-pagination
Anuoluwapo25 Mar 30, 2026
93313ce
Merge pull request #465 from Nanle-code/contract
Anuoluwapo25 Mar 31, 2026
f2034da
Merge branch 'main' into replace
Anuoluwapo25 Mar 31, 2026
94cdf0a
Merge pull request #467 from Nanle-code/replace
Anuoluwapo25 Mar 31, 2026
bfa6778
Merge branch 'main' into treasury_page
Anuoluwapo25 Mar 31, 2026
4c551b7
Merge pull request #452 from Adeyemi-cmd/treasury_page
Anuoluwapo25 Mar 31, 2026
099416f
Merge branch 'main' into feat/238-request-logger
Anuoluwapo25 Mar 31, 2026
316ff5f
Merge pull request #443 from Dayz-tech-co/feat/238-request-logger
Anuoluwapo25 Mar 31, 2026
952237d
Merge branch 'main' into feat/fuzz-tests
Anuoluwapo25 Mar 31, 2026
44e975f
feat: CI fix
hally-Ayo Apr 1, 2026
3c70d76
Add --legacy-peer-deps to npm ci in build.yml for trezor/stellar-sdk …
Anuoluwapo25 Apr 1, 2026
19f86fa
fix: resolve ESLint errors blocking Build CI
Anuoluwapo25 Apr 1, 2026
3de45f7
fix: fix prettier CI failures
Anuoluwapo25 Apr 1, 2026
c7f631a
Merge pull request #381 from Abdullahi130/feat/fuzz-tests
Anuoluwapo25 Apr 2, 2026
9f39a1c
Fix #666: feat: add community bounty board page
Stackwyre Apr 10, 2026
e24fbf2
modified files
Anuoluwapo25 Apr 18, 2026
2a088f6
feat: debugging and fixing
Anuoluwapo25 Apr 18, 2026
c63938f
fix: remove workspace dependencies
Anuoluwapo25 Apr 20, 2026
730c7bc
fix
Anuoluwapo25 Apr 21, 2026
972de4b
fix: build fix
Anuoluwapo25 Apr 21, 2026
c795274
FEAT: CONTRACT CI FUZZ TEST
Anuoluwapo25 Apr 21, 2026
6ce735a
FX: fuzz deposi allocates gov tokens monotonically
Anuoluwapo25 Apr 21, 2026
1642e85
fix: formatting
Anuoluwapo25 Apr 21, 2026
3fdd805
feat: implement JWT blocklisting and comprehensive auth service tests
Joeloo1 Apr 24, 2026
b7d69fc
Merge branch 'main' into write-tests-for-auth-service
Joeloo1 Apr 24, 2026
55aca9a
test: implement CORS configuration tests and refactor config
Joeloo1 Apr 24, 2026
4cea59f
feat: implement rich user profiles API
Joeloo1 Apr 24, 2026
f85ee85
feat: implement pagination for all list endpoints (#614)
felixkamau Apr 24, 2026
e6fce34
fix: add validator performance analytics API and admin dashboard metrics
Yusufolosun Apr 24, 2026
c29e6ea
issue fixed
blurbeast Apr 24, 2026
6ed30bb
Implement resubmit functionality for rejected milestones
Apr 24, 2026
0b0f8ff
feat: implement content moderation and flagging system
Apr 24, 2026
9438b35
ux(#730): replace generic error messages with actionable ones
jerrymusaga Apr 24, 2026
37d576c
feat(#585): implement on-chain vote delegation for governance token
jerrymusaga Apr 24, 2026
7d82a11
feat: implement comprehensive HTML sanitization and input validation
Properprogress1 Apr 24, 2026
f125450
wave 4 implementations
Wilfred007 Apr 24, 2026
f07d395
Merge pull request #786 from blurbeast/main
Anuoluwapo25 Apr 24, 2026
0561e1a
feat: add request tracing and escrow timeout automation
xqcxx Apr 24, 2026
a6f2bfd
Merge pull request #793 from Open-Works-Contributions/me/wave-4
Anuoluwapo25 Apr 24, 2026
955dbbe
Merge pull request #794 from xqcxx/feat/issues-615-576-648-566
Anuoluwapo25 Apr 24, 2026
25472d4
Merge pull request #715 from Stackwyre/fix/161-feat-add-community-bou…
Anuoluwapo25 Apr 24, 2026
9c63486
Merge branch 'main' into ux/730-actionable-error-messages
Anuoluwapo25 Apr 24, 2026
9101ed9
fix: resolve TypeScript compilation errors in Zod schemas
Properprogress1 Apr 24, 2026
74b3b04
Merge branch 'main' into main
Properprogress1 Apr 24, 2026
ec61053
feat: containerize backend with Docker (#707)
Favourof Apr 24, 2026
051cf30
feat(admin): add batch milestone approval and rejection
Litezy Apr 24, 2026
9e35fe7
feat: implement learning-time tracking and db optimization workflow
floxxih Apr 24, 2026
9fbc9c6
Merge pull request #798 from Litezy/feat/batch-milestone
Anuoluwapo25 Apr 24, 2026
b9e1fa4
fix: resolve CI/CD test failures and dependency conflicts
Properprogress1 Apr 24, 2026
000bf4f
fix: resolve governance test failures with proper mocking
Properprogress1 Apr 24, 2026
1f1e5be
feat: sync upstream, implement security headers, secret scanning, CI …
Apr 24, 2026
d052d60
chore: clean up deprecated husky lines
Apr 24, 2026
1caf92d
fix: resolve admin-milestones test failures with comprehensive mocking
Properprogress1 Apr 24, 2026
d1469a8
Merge pull request #797 from floxxih/fix-609-668-746-634
Anuoluwapo25 Apr 24, 2026
181f935
fix: trigger CI rebuild for admin-milestones routes
Properprogress1 Apr 24, 2026
13a2d28
Merge upstream/main and resolve conflicts, fix breaking changes in Tr…
Apr 24, 2026
c5bd2c4
Update PR documentation with conflict resolution details
Apr 24, 2026
7cd1703
fix: resolve scholars-milestones test failures and CI caching issues
Properprogress1 Apr 24, 2026
75b48f9
Merge branch 'main' into main
Properprogress1 Apr 24, 2026
bbeface
Merge pull request #799 from emdevelopa/main
Anuoluwapo25 Apr 24, 2026
1f64f69
Add operational documentation for testing, upgrades, and deployment
JamesVictor-O Apr 24, 2026
27bd5b8
Merge pull request #801 from JamesVictor-O/docs/resolve-assigned-issu…
Anuoluwapo25 Apr 24, 2026
d0c7da3
fix: consolidate recharts to v3 and remove legacy typings
abimbolaalabi Apr 24, 2026
bb8ca34
feat(courses): add backend search support for course listings
Litezy Apr 24, 2026
4a322ba
Merge pull request #803 from Litezy/feat/course-proposal
Anuoluwapo25 Apr 24, 2026
9570896
chore(images): convert page assets to WebP and optimize image handling
Litezy Apr 24, 2026
64ebe88
feat(devops): add code coverage reporting to CI (#704)
habnark Apr 24, 2026
2328134
Merge pull request #804 from Litezy/feat/image-conversion
Anuoluwapo25 Apr 24, 2026
e1cc660
feat(deploy): automate multi-contract Stellar deployment with CI supp…
Litezy Apr 24, 2026
d157ba3
Merge pull request #806 from Litezy/feat/deploy-all-contracts
Anuoluwapo25 Apr 24, 2026
7b4c5da
feat: add DAO search/filter, a11y audit, wallet e2e, proptest
ChaoLing140 Apr 24, 2026
e7e894e
Merge branch 'main' into write-tests-for-auth-service
Anuoluwapo25 Apr 24, 2026
c052583
Merge pull request #777 from drips-projects/write-tests-for-auth-service
Anuoluwapo25 Apr 24, 2026
6f813b9
Merge branch 'main' into ux/730-actionable-error-messages
Anuoluwapo25 Apr 24, 2026
d8d6c32
Merge pull request #789 from jerrymusaga/ux/730-actionable-error-mess…
Anuoluwapo25 Apr 24, 2026
6e8abcf
Merge pull request #790 from jerrymusaga/feat/585-vote-delegation
Anuoluwapo25 Apr 24, 2026
739730b
Merge branch 'main' into main
Anuoluwapo25 Apr 24, 2026
a5a70d2
Merge branch 'main' into add-user-profile-API
Anuoluwapo25 Apr 24, 2026
db9931d
Merge branch 'main' into fix/validator-performance-analytics
Anuoluwapo25 Apr 24, 2026
76eb172
Merge pull request #787 from pugsley76/feature/resubmit-milestones
Anuoluwapo25 Apr 24, 2026
92b05a7
Merge pull request #795 from Favourof/feature/707-containerize-backen…
Anuoluwapo25 Apr 24, 2026
4808072
security: refactor SQL queries to use parameterized placeholders in m…
midexol Apr 24, 2026
56b52ac
Merge pull request #802 from abimbolaalabi/recharts
Anuoluwapo25 Apr 24, 2026
a057d47
Merge pull request #805 from habnark/feat/coverage-reporting
Anuoluwapo25 Apr 24, 2026
deafe7f
Merge branch 'main' into main
Anuoluwapo25 Apr 24, 2026
fb67c17
Merge pull request #792 from Properprogress1/main
Anuoluwapo25 Apr 24, 2026
2287d56
Merge pull request #809 from midexol/fix/sql-injection-audit
Anuoluwapo25 Apr 24, 2026
0fb3848
ci: setup dependabot and automated security scanning for Node and Rus…
midexol Apr 24, 2026
1ec0c9c
feat(ui): add wallet address display with truncation, copy, and modal
shogun444 Apr 24, 2026
46995c0
feat: implement multi-donor co-funding and contribution tracking #fea…
midexol Apr 24, 2026
6022fb4
feat: implement community forum (Issue #747)
Feyisara2108 Apr 24, 2026
3b6971c
Merge pull request #810 from midexol/devops/security-scanning
Anuoluwapo25 Apr 24, 2026
982f171
Merge pull request #811 from midexol/feature/multi-donor-funding
Anuoluwapo25 Apr 24, 2026
d9e92d2
Merge pull request #808 from shogun444/feat/731-wallet-address-display
Anuoluwapo25 Apr 24, 2026
ac29cad
Merge pull request #812 from Feyisara2108/feat/issue-747-community-forum
Anuoluwapo25 Apr 24, 2026
41d7573
Merge pull request #817 from ChaoLing140/feat/726-658-675-584-multi-i…
Anuoluwapo25 Apr 24, 2026
4cdffaa
feat: scholarship metrics, notification bell, retry logic, skeleton l…
LawalRahman Apr 24, 2026
3340466
Merge branch 'main' into feat/scholarship-metrics-notifications-skele…
LawalRahman Apr 24, 2026
ff55ca2
Merge remote-tracking branch 'upstream/main' into feat/scholarship-me…
LawalRahman Apr 24, 2026
08d7d1f
feat: implement comprehensive rate limiting tests and typescript fixes
Joeloo1 Apr 24, 2026
9d1553e
Merge pull request #820 from LawalRahman/feat/scholarship-metrics-not…
Anuoluwapo25 Apr 24, 2026
f200fb9
Merge pull request #831 from BuildersWCT/feat/626-leaderboard-sse
Anuoluwapo25 Apr 24, 2026
891e241
Merge pull request #832 from chonilius/fix/issue-tests
Anuoluwapo25 Apr 24, 2026
d70a4a1
Merge branch 'main' into feat/614-pagination
felixkamau Apr 24, 2026
4b423c3
Merge pull request #833 from Abidoyesimze/fix/558-710-711-759-scholar…
Anuoluwapo25 Apr 24, 2026
131486d
feat: E2E test — scholarship proposal to approval to disbursement flow
Feyisara2108 Apr 24, 2026
eec9508
feat:add Sentry (or equivalent) for centralized error monitoring
Feyisara2108 Apr 24, 2026
49a94dc
feat: E2E test — comment system (post, edit, vote, delete
robertocarlous Apr 24, 2026
d0b3aa9
chore: add staging deployment workflow triggered on main
Danitello123 Apr 24, 2026
278f7cb
fix ci
robertocarlous Apr 25, 2026
508c7c3
perf: implement React code splitting for all route-level components (…
Apr 25, 2026
38c966b
fix ci
robertocarlous Apr 25, 2026
6ada857
feat(user-profile): add rich user profile page with bio, avatar, and …
Apr 25, 2026
7131c26
feat: E2E test — 404 page and error boundaries
robertocarlous Apr 25, 2026
8973e5d
fix: resolve merge conflict in .env.example
robertocarlous Apr 25, 2026
fd629eb
feat: add peer review system for milestone submissions
robertocarlous Apr 25, 2026
938aa7c
feat(#727): add keyboard navigation support to all interactive compon…
jerrymusaga Apr 25, 2026
432517e
feat(#657): add interactive lesson progress tracker with visual progr…
jerrymusaga Apr 25, 2026
d2f94bf
fix: expand health endpoint with db redis and horizon diagnostics
Yusufolosun Apr 25, 2026
eac01cf
Merge pull request #836 from Feyisara2108/feat/fix-issue#610
Anuoluwapo25 Apr 25, 2026
2d71678
Merge pull request #838 from robertocarlous/feat/E2Etes
Anuoluwapo25 Apr 25, 2026
10f6b06
Merge pull request #839 from Daniel202251/feature/staging-deploy-work…
Anuoluwapo25 Apr 25, 2026
ce32cab
Merge pull request #840 from DSOTec/feature/code-splitting-742
Anuoluwapo25 Apr 25, 2026
8df022d
Merge pull request #841 from robertocarlous/E2E-test
Anuoluwapo25 Apr 25, 2026
0f82d6d
Merge branch 'main' into feat/resolve-merge-conflict
Anuoluwapo25 Apr 25, 2026
bdae7ba
Merge pull request #843 from robertocarlous/feat/resolve-merge-conflict
Anuoluwapo25 Apr 25, 2026
22cc304
Merge pull request #844 from robertocarlous/feat/add-peer-review-system
Anuoluwapo25 Apr 25, 2026
e997a4c
Merge pull request #847 from jerrymusaga/feat/727-keyboard-navigation
Anuoluwapo25 Apr 25, 2026
00647bf
Merge pull request #848 from jerrymusaga/feat/657-lesson-progress-tra…
Anuoluwapo25 Apr 25, 2026
abeb8a3
Merge pull request #849 from Yusufolosun/fix/health-endpoint-service-…
Anuoluwapo25 Apr 25, 2026
8c001e2
Merge pull request #834 from Wittig18/fix/724-access-control-audit
Anuoluwapo25 Apr 25, 2026
c7dbcb0
Merge branch 'main' into write-tests-for-rate-limiting-middleware
Joeloo1 Apr 25, 2026
fd88d37
Merge pull request #779 from drips-projects/write-tests-for-rate-limi…
Anuoluwapo25 Apr 25, 2026
2d53cdf
Merge pull request #780 from drips-projects/write-tests-for-CORS-midd…
Anuoluwapo25 Apr 25, 2026
447e25b
Merge pull request #781 from drips-projects/add-user-profile-API
Anuoluwapo25 Apr 25, 2026
28a7742
Merge pull request #784 from felixkamau/feat/614-pagination
Anuoluwapo25 Apr 25, 2026
c87c462
Merge pull request #785 from Yusufolosun/fix/validator-performance-an…
Anuoluwapo25 Apr 25, 2026
b327a74
Merge pull request #827 from Wittig18/fix/560-quorum-threshold-positive
Anuoluwapo25 Apr 25, 2026
b937380
Merge branch 'main' into feat/665-rich-user-profile-page
DSOTec Apr 25, 2026
7740abd
Merge pull request #842 from DSOTec/feat/665-rich-user-profile-page
Anuoluwapo25 Apr 26, 2026
9218d29
chore: merge upstream/main into fork, resolve conflicts
DSOTec May 27, 2026
929c362
feat: implement proposal scheduling and timelock
DSOTec May 27, 2026
3b73141
Merge branch 'main' into feat/proposal-timelock
DSOTec May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 44 additions & 24 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,35 +1,49 @@
# LearnVault environment template for local development. Copy this file to `.env`.

# Optional: comma-separated admin email recipients for server notifications (flags, etc.)
ADMIN_EMAILS=admin@example.com

# Scaffold / local tooling
# Environment profile for Stellar scaffold scripts and CLI (`development`, `testing`, `staging`, `production`).
STELLAR_SCAFFOLD_ENV=development
# Stellar CLI config directory. See https://developers.stellar.org/docs/tools/cli/stellar-cli#stellar-config-dir
XDG_CONFIG_HOME=.config

# Docker Compose local development ports
DEV_DOCKER_FRONTEND_PORT=5173
DEV_DOCKER_API_PORT=3001
DEV_DOCKER_POSTGRES_PORT=5432
DEV_DOCKER_REDIS_PORT=6379
DEV_DOCKER_STELLAR_PORT=8000
# --- Stellar network (frontend) ---
# Prefix with PUBLIC_ so Vite exposes these to the browser.
# More on networks: https://developers.stellar.org/docs/networks

# Default: local scaffold (Horizon + Soroban on localhost)
PUBLIC_STELLAR_NETWORK=LOCAL
PUBLIC_STELLAR_NETWORK_PASSPHRASE="Standalone Network ; February 2017"
PUBLIC_STELLAR_RPC_URL=http://localhost:8000/rpc
PUBLIC_STELLAR_HORIZON_URL=http://localhost:8000

# Uncomment for Testnet instead:
# PUBLIC_STELLAR_NETWORK=TESTNET
# PUBLIC_STELLAR_NETWORK_PASSPHRASE="Test SDF Network ; September 2015"
# PUBLIC_STELLAR_RPC_URL=https://soroban-testnet.stellar.org
# PUBLIC_STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org

# Stellar network
PUBLIC_STELLAR_NETWORK=TESTNET
PUBLIC_STELLAR_NETWORK_PASSPHRASE="Test SDF Network ; September 2015"
PUBLIC_STELLAR_RPC_URL=https://soroban-testnet.stellar.org
PUBLIC_STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org
# Uncomment for Mainnet:
# PUBLIC_STELLAR_NETWORK=MAINNET
# PUBLIC_STELLAR_NETWORK_PASSPHRASE="Public Global Stellar Network ; September 2015"
# PUBLIC_STELLAR_RPC_URL=
# PUBLIC_STELLAR_HORIZON_URL=

# LearnVault contract IDs
# --- LearnVault contract IDs (populate after deploy; Vite `VITE_*` vars) ---
VITE_LEARN_TOKEN_CONTRACT_ID=
VITE_GOVERNANCE_TOKEN_CONTRACT_ID=
VITE_SCHOLAR_NFT_CONTRACT_ID=
VITE_COURSE_MILESTONE_CONTRACT_ID=
VITE_SCHOLARSHIP_TREASURY_CONTRACT_ID=
VITE_MILESTONE_ESCROW_CONTRACT_ID=
VITE_SCHOLARSHIP_TREASURY_CONTRACT_ID=
VITE_SCHOLAR_NFT_CONTRACT_ID=

# USDC on Stellar Testnet
VITE_USDC_CONTRACT_ID=
# USDC on Stellar — the app reads either name (see `src/util/usdc.ts`).
PUBLIC_USDC_CONTRACT_ID=
VITE_USDC_CONTRACT_ID=

# Legacy frontend aliases still read by older screens/hooks
# Legacy `PUBLIC_*` aliases still read by older screens/hooks (optional).
PUBLIC_LEARN_TOKEN_CONTRACT=
PUBLIC_GOVERNANCE_TOKEN_CONTRACT=
PUBLIC_SCHOLAR_NFT_CONTRACT=
Expand All @@ -38,14 +52,20 @@ PUBLIC_SCHOLARSHIP_TREASURY_CONTRACT=
PUBLIC_MILESTONE_ESCROW_CONTRACT=
PUBLIC_SCHOLARSHIP_GOVERNANCE_CONTRACT=

# Backend API
VITE_API_URL=http://localhost:4000
VITE_API_BASE_URL=/api
# --- Backend / API (frontend → server) ---
# Backend runs on port 4000 by default (`npm run dev:server` / CONTRIBUTING.md).
VITE_SERVER_URL=http://localhost:4000
# Optional override when the API is on a different origin; leave empty to derive from `VITE_SERVER_URL`.
VITE_API_URL=
# Relative API prefix used by some upload and scholar flows.
VITE_API_BASE_URL=/api

# Docker Compose notes:
# - `npm run dev:docker` injects LOCAL Stellar endpoints for the frontend service.
# - Override the DEV_DOCKER_* values above if these host ports are already in use.
# --- Email (optional for local) ---
RESEND_API_KEY=
EMAIL_FROM=notifications@learnvault.xyz
FRONTEND_URL=http://localhost:3000

# IPFS gateway (optional)
# --- IPFS / Pinata (optional for uploads) ---
PINATA_API_KEY=
PINATA_SECRET=
VITE_IPFS_GATEWAY_URL=https://gateway.pinata.cloud/ipfs
286 changes: 286 additions & 0 deletions .github/workflows/deploy-staging.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
name: Staging deployment

on:
push:
branches:
- main

concurrency:
group: staging-deploy-${{ github.ref }}
cancel-in-progress: true

env:
STAGING_BACKEND_URL: ${{ secrets.STAGING_BACKEND_URL }}
STAGING_BACKEND_DEPLOY_TOKEN: ${{ secrets.STAGING_BACKEND_DEPLOY_TOKEN }}
STAGING_FRONTEND_URL: ${{ secrets.STAGING_FRONTEND_URL }}
STAGING_FRONTEND_DEPLOY_TOKEN: ${{ secrets.STAGING_FRONTEND_DEPLOY_TOKEN }}
STAGING_API_URL: ${{ secrets.STAGING_API_URL }}
STAGING_URL: ${{ secrets.STAGING_URL }}
STAGING_DATABASE_URL: ${{ secrets.STAGING_DATABASE_URL || secrets.DATABASE_URL || '' }}
STAGING_REDIS_URL: ${{ secrets.STAGING_REDIS_URL || secrets.REDIS_URL || '' }}
STELLAR_SECRET_KEY: ${{ secrets.STAGING_STELLAR_SECRET_KEY || secrets.STELLAR_SECRET_KEY || '' }}

jobs:
build-and-test:
name: Build and validate staging artifacts
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Add Wasm target and native dependencies
run: |
rustup target add wasm32v1-none
sudo apt-get update
sudo apt-get install -y libudev-dev libdbus-1-dev pkg-config

- name: Install stellar-scaffold CLI
uses: cargo-bins/cargo-binstall@main
with:
tool: stellar-scaffold-cli

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- name: Install frontend dependencies
run: npm ci --legacy-peer-deps

- name: Run lint and formatting checks
run: |
npm run lint
npx prettier . --check

- name: Validate database migration safety
run: |
if [ -d "server/prisma" ]; then
npx prisma migrate dev --dry-run
elif [ -f "server/knexfile.js" ]; then
npx knex migrate:list
else
echo "No standard migration tool detected, skipping dry-run."
fi

- name: Build scaffold and generate contract clients
run: |
STELLAR_SCAFFOLD_ENV=staging stellar-scaffold build --build-clients 2>&1 | tee build_clients.log

- name: Verify generated clients
run: |
FAILED=$(grep -Eo "Failed: [0-9]+" build_clients.log | awk '{print $2}')
if [ -n "$FAILED" ] && [ "$FAILED" -gt 0 ]; then
echo "Client generation summary check failed: Failed: $FAILED"
exit 1
fi

- name: Build frontend and contract packages
run: |
npm run install:contracts
npm run build

- name: Run test suite
run: npm test --if-present

deploy-contracts:
name: Deploy contracts to testnet
needs: build-and-test
runs-on: ubuntu-latest
environment: staging

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22

- name: Install Stellar CLI
run: npm install -g @stellar/stellar-cli

- name: Deploy contracts to Stellar Testnet
env:
STELLAR_SECRET_KEY: ${{ env.STELLAR_SECRET_KEY }}
run: |
if [ -z "${STELLAR_SECRET_KEY}" ]; then
echo "STAGING_STELLAR_SECRET_KEY or STELLAR_SECRET_KEY is not configured."
exit 1
fi
chmod +x scripts/deploy-testnet.sh
./scripts/deploy-testnet.sh

deploy-backend:
name: Deploy backend and run migrations
needs: build-and-test
runs-on: ubuntu-latest
environment: staging

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- name: Install backend dependencies
run: npm ci --legacy-peer-deps
working-directory: server

- name: Build backend
run: npm run build
working-directory: server

- name: Run database migrations
env:
DATABASE_URL: ${{ env.STAGING_DATABASE_URL }}
NODE_ENV: production
run: |
if [ -z "${DATABASE_URL}" ]; then
echo "STAGING_DATABASE_URL or DATABASE_URL is not configured. Cannot run migrations."
exit 1
fi
npm run migrate
working-directory: server

- name: Deploy backend to staging provider
if: ${{ env.STAGING_BACKEND_URL != '' && env.STAGING_BACKEND_DEPLOY_TOKEN != '' }}
run: |
echo "Triggering backend deployment webhook..."
curl -fsSL -X POST \
-H "Authorization: Bearer ${STAGING_BACKEND_DEPLOY_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"branch":"main","environment":"staging"}' \
"${STAGING_BACKEND_URL}"

- name: Backend deploy webhook skipped
if: ${{ env.STAGING_BACKEND_URL == '' || env.STAGING_BACKEND_DEPLOY_TOKEN == '' }}
run: |
echo "Skipping backend deployment webhook because STAGING_BACKEND_URL or STAGING_BACKEND_DEPLOY_TOKEN is not configured."

deploy-frontend:
name: Deploy frontend to staging
needs: build-and-test
runs-on: ubuntu-latest
environment: staging

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- name: Install frontend dependencies
run: npm ci --legacy-peer-deps

- name: Build frontend
run: npm run build

- name: Deploy frontend to staging provider
if: ${{ env.STAGING_FRONTEND_URL != '' && env.STAGING_FRONTEND_DEPLOY_TOKEN != '' }}
run: |
echo "Triggering frontend deployment webhook..."
curl -fsSL -X POST \
-H "Authorization: Bearer ${STAGING_FRONTEND_DEPLOY_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"branch":"main","environment":"staging"}' \
"${STAGING_FRONTEND_URL}"

- name: Frontend deploy webhook skipped
if: ${{ env.STAGING_FRONTEND_URL == '' || env.STAGING_FRONTEND_DEPLOY_TOKEN == '' }}
run: |
echo "Skipping frontend deployment webhook because STAGING_FRONTEND_URL or STAGING_FRONTEND_DEPLOY_TOKEN is not configured."

smoke-test:
name: Run staging smoke tests
needs:
- deploy-contracts
- deploy-backend
- deploy-frontend
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22

- name: Install Stellar CLI
run: npm install -g @stellar/stellar-cli

- name: Run contract smoke tests
run: chmod +x scripts/smoke-test-contracts.sh && ./scripts/smoke-test-contracts.sh

- name: Verify staging API availability
if: ${{ env.STAGING_API_URL != '' }}
run: |
echo "Checking staging API at ${STAGING_API_URL}"
curl -fSL "${STAGING_API_URL}" -o /dev/null

- name: Staging API check skipped
if: ${{ env.STAGING_API_URL == '' }}
run: |
echo "Skipping staging API availability verification because STAGING_API_URL is not configured."

comment-on-pr:
name: Post staging deployment status to merged PR
needs: smoke-test
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Post deployment status to PR
uses: actions/github-script@v7
env:
STAGING_URL: ${{ env.STAGING_URL }}
STAGING_API_URL: ${{ env.STAGING_API_URL }}
STAGING_FRONTEND_URL: ${{ env.STAGING_FRONTEND_URL }}
STAGING_BACKEND_URL: ${{ env.STAGING_BACKEND_URL }}
with:
script: |
const { data: pulls } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
owner: context.repo.owner,
repo: context.repo.repo,
commit_sha: context.sha,
});

const mergedPR = pulls.find(pr => pr.merged_at);
if (!mergedPR) {
console.log('No merged PR associated with this commit. Skipping PR comment.');
return;
}

const body = `## Staging deployment completed\n\n` +
`- **Frontend:** ${process.env.STAGING_FRONTEND_URL || 'not configured'}\n` +
`- **Backend:** ${process.env.STAGING_BACKEND_URL || 'not configured'}\n` +
`- **API:** ${process.env.STAGING_API_URL || 'not configured'}\n` +
`- **Contracts:** deployed to Stellar Testnet\n\n` +
`Smoke tests ran after deployment. If a staging URL is missing, configure the corresponding repository secret.\n`;

await github.rest.issues.createComment({
issue_number: mergedPR.number,
owner: context.repo.owner,
repo: context.repo.repo,
body,
});
8 changes: 8 additions & 0 deletions .qwen/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"permissions": {
"allow": [
"Bash(npm run *)"
]
},
"$version": 3
}
Loading
Loading