|
6601
|
First Time Creating A Slack Bot by @franco | Stard First Time Creating A Slack Bot by @franco | Stardance...
|
franco
|
1
|
0.31
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T15:12:18Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple slack bot with some basic commands /dsb-ping - Check bot latency /dsb-help - List all available commands /dsb-catfact - Get a random cat fact /dsb-joke - Get a random joke thought it was going to be easier like creating a discord bot so yeah it works mostly", "repo": "https://github.com/Franco-Senes/Stardance-Slackbot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B92B08KC6"}]...
|
[{"post_id": 3792, "ts": "2026 [{"post_id": 3792, "ts": "2026-06-06T20:54:19Z", "hours": 0.3122, "text": "Updated the read me!"}, {"post_id": 2157, "ts": "2026-06-04T14:29:25Z", "hours": 0.3539, "text": "Coding the bot was the easy part but configurtating was hell."}]...
|
Title: First Time Creating A Slack Bot by @franco Title: First Time Creating A Slack Bot by @franco | Stardance
Devlogs:
Coding the bot was the easy part but configurtating was hell.
Updated the read me!
Ships:
I made a simple slack bot with some basic commands /dsb-ping - Check bot latency /dsb-help - List all available commands /dsb-catfact - Get a random cat fact /dsb-joke - Get a random joke thought it was going to be easier like creating a discord bot so yeah it works mostly...
|
1793267302.6225574
|
1793353702.6225574
|
|
6602
|
Untitled by @Knox | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Knox | Stardance
|
1792749052.2607346
|
1793353852.2607346
|
|
6603
|
Personal website by @axyprism | Stardance
|
axyprism
|
0
|
2.61
|
0
|
[]
|
[{"post_id": 2502, "ts": "2026 [{"post_id": 2502, "ts": "2026-06-05T01:03:18Z", "hours": 2.6075, "text": "Basic UI + interaction set up"}]...
|
Title: Personal website by @axyprism | Stardance
Title: Personal website by @axyprism | Stardance
Devlogs:
Basic UI + interaction set up...
|
1793235222.054537
|
1793840022.054537
|
|
6604
|
My awesome macropad! by @Arche | Stardance
|
Arche
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T21:25:16Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 3x3 macropad which i can use to make my daily life easier and specially as a graphic designer make a few tasks whihc would otherwise take me multiple clicks so do, to now only a single button. As for my first project i was certain to use AI but i used much less than i expected and only when i ran into genuine issues like on how to set up the firmware software and other miniscule stuff. I am pretty proud of what i made, though i feel i could have made a better case as the display is kind of off center. Anyways glad to have taken part in making my first hardware project through this.", "repo": "https://github.com/Arche09/Macropad-Hackclub-", "demo": ""}]...
|
[{"post_id": 15911, "ts": "202 [{"post_id": 15911, "ts": "2026-06-25T21:18:05Z", "hours": 0.2836, "text": "Finally Finished the macropad, with all the code along wwith final touchups and my own custom twists."}, {"post_id": 11485, "ts": "2026-06-18T19:21:18Z", "hours": 1.1214, "text": "Well i had to remake the whole case because i started having problems with the dimensions and wasnt happy with it either. Though i wouldve liked my oled display to be centred i really am done with making the case again so i might leave it like this since after all this is my first project i cant expect it to be perfect."}, {"post_id": 7022, "ts": "2026-06-11T19:38:28Z", "hours": 0.5228, "text": "Devlog #2 - Connected all teh components, changed a few of them and now moving on to make the case for the pcb"}, {"post_id": 5216, "ts": "2026-06-08T22:30:03Z", "hours": 0.9681, "text": "I updated the hackpad to customise it for myself!"}]...
|
Title: My awesome macropad! by @Arche | Stardance
Title: My awesome macropad! by @Arche | Stardance
Devlogs:
I updated the hackpad to customise it for myself!
Devlog #2 - Connected all teh components, changed a few of them and now moving on to make the case for the pcb
Well i had to remake the whole case because i started having problems with the dimensions and wasnt happy with it either. Though i wouldve liked my oled display to be centred i really am done with making the case again so i might leave it like this since after all this is my first project i cant expect it to be perfect.
Finally Finished the macropad, with all the code along wwith final touchups and my own custom twists.
Ships:
I made a 3x3 macropad which i can use to make my daily life easier and specially as a graphic designer make a few tasks whihc would otherwise take me multiple clicks so do, to now only a single button. As for my first project i was certain to use AI but i used much less than i expected and only when i ran into genuine issues like on how to set up the firmware software and other miniscule stuff. I am pretty proud of what i made, though i feel i could have made a better case as the display is kind of off center. Anyways glad to have taken part in making my first hardware project through this....
|
1793311016.7993178
|
1793397416.7993178
|
|
6605
|
My first slack bot! by @Beef | Stardance
|
Beef
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Beef | Stardance
|
1793188412.9678001
|
1793793212.9678001
|
|
6606
|
My awesome macropad! by @sadotterz | Stardance
|
sadotterz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sadotterz | Starda Title: My awesome macropad! by @sadotterz | Stardance...
|
1792745522.374006
|
1793350322.374006
|
|
6607
|
Cool rendering by @kuba_ch101 | Stardance
|
kuba_ch101
|
0
|
13.68
|
0
|
[]
|
[{"post_id": 5613, "ts": "2026 [{"post_id": 5613, "ts": "2026-06-09T14:05:51Z", "hours": 5.0364, "text": "I havent posted any devlogs lately since my account had an issue with time sync. Now I am back, here are the features that i added: -Improved rendering pipeline -Made a foundation for the final project -Added basic shading -Tested the transformation It finaly starts to look like something:"}, {"post_id": 2696, "ts": "2026-06-05T12:06:36Z", "hours": 1.9781, "text": "I made a function that draws sphere in OpenGL, It took me a lot of calculations. I added a shader from the internet, it looks terrible, but i leats i know that the sphere is ok:"}, {"post_id": 2327, "ts": "2026-06-04T19:18:48Z", "hours": 3.0333, "text": "I made a function that draws circles in OpenGL, now i will work on making spheres."}, {"post_id": 2015, "ts": "2026-06-04T09:17:21Z", "hours": 0.8719, "text": "I learned how to use index buffer"}, {"post_id": 1597, "ts": "2026-06-03T18:35:24Z", "hours": 2.7642, "text": "Learned the basics of openGL"}]...
|
Title: Cool rendering by @kuba_ch101 | Stardance
Title: Cool rendering by @kuba_ch101 | Stardance
Devlogs:
Learned the basics of openGL
I learned how to use index buffer
I made a function that draws circles in OpenGL, now i will work on making spheres.
I made a function that draws sphere in OpenGL, It took me a lot of calculations. I added a shader from the internet, it looks terrible, but i leats i know that the sphere is ok:
I havent posted any devlogs lately since my account had an issue with time sync. Now I am back, here are the features that i added: -Improved rendering pipeline -Made a foundation for the final project -Added basic shading -Tested the transformation It finaly starts to look like something:...
|
1792702251.6662874
|
1793307051.6662874
|
|
6608
|
My first slack bot! by @Macho | Stardance
|
Macho
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Macho | Stardance
|
1793353751.1336393
|
1793958551.1336393
|
|
6609
|
My first slack bot! by @Zsombi25 | Stardance
|
Zsombi25
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Zsombi25 | Stardanc Title: My first slack bot! by @Zsombi25 | Stardance...
|
1792806804.9023185
|
1793411604.9023185
|
|
6610
|
My awesome macropad! by @lakshyasarnaik | Stardanc My awesome macropad! by @lakshyasarnaik | Stardance...
|
lakshyasarnaik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @lakshyasarnaik | S Title: My awesome macropad! by @lakshyasarnaik | Stardance...
|
1792724057.2194479
|
1793328857.2194479
|
|
6611
|
Woodshop Warfare by @Sentient_Cranberry | Stardanc Woodshop Warfare by @Sentient_Cranberry | Stardance...
|
Sentient_Cranberry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Woodshop Warfare by @Sentient_Cranberry | S Title: Woodshop Warfare by @Sentient_Cranberry | Stardance...
|
1793289378.1902964
|
1793894178.1902964
|
|
6612
|
My awesome macropad! by @Cucumbrs | Stardance
|
Cucumbrs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Cucumbrs | Stardan Title: My awesome macropad! by @Cucumbrs | Stardance...
|
1792774255.7575324
|
1793379055.7575324
|
|
6613
|
My first slack bot! by @Arnav123 | Stardance
|
Arnav123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Arnav123 | Stardanc Title: My first slack bot! by @Arnav123 | Stardance...
|
1793263837.696341
|
1793868637.696341
|
|
6614
|
Untitled by @lakshyasarnaik | Stardance
|
lakshyasarnaik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @lakshyasarnaik | Stardance
|
1792730841.66515
|
1793335641.66515
|
|
6615
|
My awesome macropad! by @Casper | Stardance
|
Casper
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Casper | Stardance
|
1793285753.31243
|
1793890553.31243
|
|
6616
|
Untitled by @bob_the_builder | Stardance
|
bob_the_builder
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @bob_the_builder | Stardance
|
1793303793.1133523
|
1793908593.1133523
|
|
6617
|
Untitled project by @auracle | Stardance
|
auracle
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @auracle | Stardance
|
1792705736.91209
|
1793310536.91209
|
|
6618
|
(Definitely) Just some ducks by @Astro-Duck | Star (Definitely) Just some ducks by @Astro-Duck | Stardance...
|
Astro-Duck
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: (Definitely) Just some ducks by @Astro-Duck Title: (Definitely) Just some ducks by @Astro-Duck | Stardance...
|
1792655337.7423825
|
1793260137.7423825
|
|
6619
|
OpenApollo GUI by @ReTTr0c | Stardance
|
ReTTr0c
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: OpenApollo GUI by @ReTTr0c | Stardance
|
1793220695.4194012
|
1793825495.4194012
|
|
6620
|
My awesome macropad! by @matthew_MOSI | Stardance
|
matthew_MOSI
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @matthew_MOSI | Sta Title: My awesome macropad! by @matthew_MOSI | Stardance...
|
1792659267.6754122
|
1793264067.6754122
|
|
6621
|
SineWave Engine by @ReTTr0c | Stardance
|
ReTTr0c
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SineWave Engine by @ReTTr0c | Stardance
|
1792911014.086677
|
1793775014.086677
|
|
6622
|
My awesome macropad! by @liltimamle | Stardance
|
liltimamle
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @liltimamle | Stard Title: My awesome macropad! by @liltimamle | Stardance...
|
1792698763.6811285
|
1793303563.6811285
|
|
6623
|
Untitled by @WestonPetersen | Stardance
|
WestonPetersen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @WestonPetersen | Stardance
|
1793235061.8445435
|
1793839861.8445435
|
|
6624
|
RootDash by @Henry | Stardance
|
Henry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: RootDash by @Henry | Stardance
|
1793181363.7307076
|
1793786163.7307076
|
|
6625
|
CognSpark by @Allen | Stardance
|
Allen
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 3696, "ts": "2026 [{"post_id": 3696, "ts": "2026-06-06T19:02:25Z", "hours": 1.0, "text": "I am working on making the UI better and making the home page and hero section stand out more."}]...
|
Title: CognSpark by @Allen | Stardance
Devlogs:
I Title: CognSpark by @Allen | Stardance
Devlogs:
I am working on making the UI better and making the home page and hero section stand out more....
|
1792907691.7636664
|
1793771691.7636664
|
|
6626
|
My awesome macropad! by @fongeazem | Stardance
|
fongeazem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @fongeazem | Starda Title: My awesome macropad! by @fongeazem | Stardance...
|
1793224579.7081153
|
1793829379.7081153
|
|
6627
|
Devault by @jasq1234 | Stardance
|
jasq1234
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Devault by @jasq1234 | Stardance
|
1793173813.6267805
|
1793778613.6267805
|
|
6628
|
My awesome macropad! by @extend | Stardance
|
extend
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @extend | Stardance
|
1793317716.8022647
|
1793922516.8022647
|
|
6629
|
Devault by @jan_zdan1234 | Stardance
|
jan_zdan1234
|
0
|
39.0
|
0
|
[]
|
[{"post_id": 62358, "ts": "202 [{"post_id": 62358, "ts": "2026-09-05T18:01:38Z", "hours": 5.6394, "text": "Spent most of the time on the GitHub side of ingestion-service. Went with GraphQL instead of REST, mainly to actually learn something new — turned out to have its own quirks (no file diffs available, rate limiting works completely differently, cursor-based pagination instead of the usual page numbers). Built the GitHub client with three methods for commits, PRs, and issues, all going through one GraphQL endpoint. Tested it live against a few real repos, including our own Devault repo, and it’s working correctly along with pagination and rate limit tracking. Sorted out secure token storage too - separate table for credentials, encrypted with AES-GCM, and nothing else in the codebase touches the raw token except one dedicated service. Also added a check so nobody can use someone else’s token, which wasn’t there at first and was a real gap I almost shipped. Backfill is working now - runs async on virtual threads, loops through pagination for each resource type, saves to the DB with idempotency so restarts don’t duplicate anything. Source status goes PENDING -> SYNCING -> ACTIVE/ERROR depending on how it goes. Last thing I got done was the service and controller for creating sources. Still need to test the whole flow end to end through the API, add the workspace role check I skipped for now."}, {"post_id": 34206, "ts": "2026-07-24T18:40:39Z", "hours": 1.1872, "text": "Spent today setting up the ingestion-service module. Decided to go with personal access tokens for GitHub auth instead of building a full GitHub App, way less setup for now and honestly the app registration stuff isn’t worth it yet. Got the module skeleton wired up too. Hit a dumb Gradle error where IntelliJ kept saying it couldn’t find a Kotlin task in the module, turned out I accidentally put an include() call inside the module’s build.gradle.kts instead of settings.gradle.kts. Classic copy paste mistake. Fixed it and the sync worked fine after that. Also poked at the JWKS endpoint path stuff on auth-service, decided to keep it out of the api/v1 prefix by using RequestMapping per controller instead of a global context path, since jwks is supposed to live at the root per spec anyway. Next up is actually building the GitHub client and the data model for ingestion sources."}, {"post_id": 33486, "ts": "2026-07-23T13:58:37Z", "hours": 1.8556, "text": "Fixed most of the bugs from the code review today. Sorted out exception handling in common-lib, fixed a race condition when adding a member to a workspace, got the JWKS key cache working properly, plus a few smaller things along the way. Had some pain with kids in the tokens, but ended up leaving it in a simpler version since it doesn’t really matter without key rotation anyway. Next up is ingestion-service. Starting with GitHub, using a personal access token for now instead of jumping straight into GitHub App territory. Backfill first, then webhooks, we’ll see how it goes."}, {"post_id": 27688, "ts": "2026-07-13T14:01:42Z", "hours": 2.6669, "text": "Wrapped up MockK unit tests for auth-service-lib - JwtClaimsService, JwtAuthenticationProvider, and JwtAuthenticationFilter are now fully covered. Burned a good chunk of time on one annoying issue with relaxed = true on the HttpServletRequest mock - OncePerRequestFilter internally checks getAttribute/getDispatcherType before even reaching the actual filter logic, and the relaxed mock was returning non-null instead of null, so tests were passing for entirely the wrong reason. Lesson learned: when mocking Servlet API, better to explicitly stub those two calls in @BeforeEach instead of relying on relaxed. Code review also turned up a real security gap in validate() - a token with no exp claim was passing validation as effectively non-expiring, since JJWT only throws ExpiredJwtException when exp is present and past, not when it’s missing entirely. Fix incoming. Holding off on MVC/@WebMvcTest for the controllers for now - fixing a handful of code review items first (the missing exp check, plus making exception handling consistent in extractExpiration), then back to controller tests and GlobalExceptionHandler."}, {"post_id": 20031, "ts": "2026-07-01T15:11:59Z", "hours": 2.2333, "text": "I finished auth-service tests now I’m working on auth-lib. One test that failed is spring conected because I didn’t provide on local good configuration that is why it failed but in docker it works perfectly."}, {"post_id": 17900, "ts": "2026-06-28T20:44:43Z", "hours": 5.8931, "text": "I’ve written some tests, but haven’t finished yet. So far I’ve covered services with business logic in workspace-service, and I’m currently working on auth-service. After that, I’m planning to add some MVC tests for controllers and exception handlers, and finally write tests for my shared libraries: auth-service-lib and common-lib."}, {"post_id": 13758, "ts": "2026-06-22T15:31:14Z", "hours": 5.3156, "text": "Just wrapped up workspace-service. As always, had some trouble on the auth side — needed to fix a handful of bugs that came up during code review (a couple of nasty ones: deleteWorkspace was silently broken due to an FK constraint, and transferOwnership wasn’t updating Workspace.ownerId, which could’ve permanently locked workspaces). Also caught a regression in the JWT filter that was blocking even permitAll routes like login/refresh — fixed now. Along the way I also pulled the ApiResponse wrapper and exception handling into a shared common-lib module, so both auth-service and workspace-service now return a consistent response format. I might revisit a few design choices here later for my own convenience, but for now the service is functionally complete — workspace CRUD, member management, role changes, and ownership transfer all working with proper error handling. Starting on tests next, then moving on to ingestion-service."}, {"post_id": 10887, "ts": "2026-06-17T20:54:30Z", "hours": 4.8578, "text": "I have finished basics in workspace-service like some CRUD controllers basic services and repositories with dtos now I’m testing everything in insomnia. I also had some troubles with auth, it was a nightmare to find a bug (i was hardcoding jwt issuer). I added in my screenshot content from testing in insomnia"}, {"post_id": 8667, "ts": "2026-06-14T12:18:27Z", "hours": 0.8042, "text": "I fixed up auth-service-lib before jumping into workspace-service. I added AuthenticatedUser so other services can just use @AuthenticationPrincipal instead of digging through SecurityContext manually. also fixed some stuff in JwtTokenCandidate that was technically wrong but worked anyway lol"}, {"post_id": 8299, "ts": "2026-06-13T19:55:45Z", "hours": 4.5347, "text": "I made auth-service-lib today, basically a shared lib so i dont have to copy paste the same jwt verification code into every new microservice. workspace-service, query-service etc. I will just import it and get the filter + claims extraction for free. Had a weird issue where JwksClient was trying to fetch the public key from auth-service before it even started, took me a bit to figure out but I fixed it."}, {"post_id": 4381, "ts": "2026-06-07T18:15:39Z", "hours": 1.5217, "text": "I added JWT auth with Ed25519 signing. Now login returns access + refresh token pair, refresh rotates tokens, logout blacklists the refresh token in Redis. JWKS endpoint exposed at /.well-known/jwks.json for other services to verify tokens."}, {"post_id": 2368, "ts": "2026-06-04T20:29:25Z", "hours": 2.4933, "text": "i was working on my auth-service. I changed from basic auth with bearer tokens to access and refresh tokens. Also I added endpoint to refresh tokens when they expire and logout endpoint."}]...
|
Title: Devault by @jan_zdan1234 | Stardance
Devlo Title: Devault by @jan_zdan1234 | Stardance
Devlogs:
i was working on my auth-service. I changed from basic auth with bearer tokens to access and refresh tokens. Also I added endpoint to refresh tokens when they expire and logout endpoint.
I added JWT auth with Ed25519 signing. Now login returns access + refresh token pair, refresh rotates tokens, logout blacklists the refresh token in Redis. JWKS endpoint exposed at /.well-known/jwks.json for other services to verify tokens.
I made auth-service-lib today, basically a shared lib so i dont have to copy paste the same jwt verification code into every new microservice. workspace-service, query-service etc. I will just import it and get the filter + claims extraction for free. Had a weird issue where JwksClient was trying to fetch the public key from auth-service before it even started, took me a bit to figure out but I fixed it.
I fixed up auth-service-lib before jumping into workspace-service. I added AuthenticatedUser so other services can just use @AuthenticationPrincipal instead of digging through SecurityContext manually. also fixed some stuff in JwtTokenCandidate that was technically wrong but worked anyway lol
I have finished basics in workspace-service like some CRUD controllers basic services and repositories with dtos now I’m testing everything in insomnia. I also had some troubles with auth, it was a nightmare to find a bug (i was hardcoding jwt issuer). I added in my screenshot content from testing in insomnia
Just wrapped up workspace-service. As always, had some trouble on the auth side — needed to fix a handful of bugs that came up during code review (a couple of nasty ones: deleteWorkspace was silently broken due to an FK constraint, and transferOwnership wasn’t updating Workspace.ownerId, which could’ve permanently locked workspaces). Also caught a regression in the JWT filter that was blocking even permitAll routes like login/refresh — fixed now. Along the way I also pulled the ApiResponse wrapper and exception handling into a shared common-lib module, so both auth-service and workspace-service now return a consistent response format. I might revisit a few design choices here later for my own convenience, but for now the service is functionally complete — workspace CRUD, member management, role changes, and ownership transfer all working with proper error handling. Starting on tests next, then moving on to ingestion-service.
I’ve written some tests, but haven’t finished yet. So far I’ve covered services with business logic in workspace-service, and I’m currently working on auth-service. After that, I’m planning to add some MVC tests for controllers and exception handlers, and finally write tests for my shared libraries: auth-service-lib and common-lib.
I finished auth-service tests now I’m working on auth-lib. One test that failed is spring conected because I didn’t provide on local good configuration that is why it failed but in docker it works perfectly.
Wrapped up MockK unit tests for auth-service-lib - JwtClaimsService, JwtAuthenticationProvider, and JwtAuthenticationFilter are now fully covered. Burned a good chunk of time on one annoying issue with relaxed = true on the HttpServletRequest mock - OncePerRequestFilter internally checks getAttribute/getDispatcherType before even reaching the actual filter logic, and the relaxed mock was returning non-null instead of null, so tests were passing for entirely the wrong reason. Lesson learned: when mocking Servlet API, better to explicitly stub those two calls in @BeforeEach instead of relying on relaxed. Code review also turned up a real security gap in validate() - a token with no exp claim was passing validation as effectively non-expiring, since JJWT only throws ExpiredJwtException when exp is present and past, not when it’s missing entirely. Fix incoming. Holding off on MVC/@WebMvcTest for the controllers for now - fixing a handful of code review items first (the missing exp check, plus making exception handling consistent in extractExpiration), then back to controller tests and GlobalExceptionHandler.
Fixed most of the bugs from the code review today. Sorted out exception handling in common-lib, fixed a race condition when adding a member to a workspace, got the JWKS key cache working properly, plus a few smaller things along the way. Had some pain with kids in the tokens, but ended up leaving it in a simpler version since it doesn’t really matter without key rotation anyway. Next up is ingestion-service. Starting with GitHub, using a personal access token for now instead of jumping straight into GitHub App territory. Backfill first, then webhooks, we’ll see how it goes.
Spent today setting up the ingestion-service module. Decided to go with personal access tokens for GitHub auth instead of building a full GitHub App, way less setup for now and honestly the app registration stuff isn’t worth it yet. Got the module skeleton wired up too. Hit a dumb Gradle error where IntelliJ kept saying it couldn’t find a Kotlin task in the module, turned out I accidentally put an include() call inside the module’s build.gradle.kts instead of settings.gradle.kts. Classic copy paste mistake. Fixed it and the sync worked fine after that. Also poked at the JWKS endpoint path stuff on auth-service, decided to keep it out of the api/v1 prefix by using RequestMapping per controller instead of a global context path, since jwks is supposed to live at the root per spec anyway. Next up is actually building the GitHub client and the data model for ingestion sources.
Spent most of the time on the GitHub side of ingestion-service. Went with GraphQL instead of REST, mainly to actually learn something new — turned out to have its own quirks (no file diffs available, rate limiting works completely differently, cursor-based pagination instead of the usual page numbers). Built the GitHub client with three methods for commits, PRs, and issues, all going through one GraphQL endpoint. Tested it live against a few real repos, including our own Devault repo, and it’s working correctly along with pagination and rate limit tracking. Sorted out secure token storage too - separate table for credentials, encrypted with AES-GCM, and nothing else in the codebase touches the raw token except one dedicated service. Also added a check so nobody can use someone else’s token, which wasn’t there at first and was a real gap I almost shipped. Backfill is working now - runs async on virtual threads, loops through pagination for each resource type, saves to the DB with idempotency so restarts don’t duplicate anything. Source status goes PENDING -> SYNCING -> ACTIVE/ERROR depending on how it goes. Last thing I got done was the service and controller for creating sources. Still need to test the whole flow end to end through the API, add the workspace role check I skipped for now....
|
1792680852.3454087
|
1793285652.3454087
|
|
6630
|
My first slack bot! by @3DPrinterPro | Stardance
|
3DPrinterPro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @3DPrinterPro | Star Title: My first slack bot! by @3DPrinterPro | Stardance...
|
1792712967.017071
|
1793317767.017071
|
|
6631
|
My first slack bot! by @3DPrinterPro | Stardance
|
3DPrinterPro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @3DPrinterPro | Star Title: My first slack bot! by @3DPrinterPro | Stardance...
|
1793174019.4216924
|
1793778819.4216924
|
|
6632
|
My awesome macropad! by @ADELGADO | Stardance
|
ADELGADO
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ADELGADO | Stardan Title: My awesome macropad! by @ADELGADO | Stardance...
|
1792673389.3138344
|
1793278189.3138344
|
|
6633
|
Untitled project by @TheBreadMuncher | Stardance
|
TheBreadMuncher
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @TheBreadMuncher | Star Title: Untitled project by @TheBreadMuncher | Stardance...
|
1792662563.2034411
|
1793267363.2034411
|
|
6634
|
EcoShield Command by @ialex | Stardance
|
ialex
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: EcoShield Command by @ialex | Stardance
|
1793346938.353686
|
1793951738.353686
|
|
6635
|
EmoJ by @YasogaN | Stardance
|
YasogaN
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: EmoJ by @YasogaN | Stardance
|
1793188511.4766445
|
1793793311.4766445
|
|
6636
|
CHIPC-8 by @wilrakov | Stardance
|
wilrakov
|
0
|
1.1
|
0
|
[]
|
[{"post_id": 3371, "ts": "2026 [{"post_id": 3371, "ts": "2026-06-06T08:10:32Z", "hours": 1.0969, "text": "“Let’s strip away the layers of bloated complexity. Welcome to the CHIPC adventure.” You probably have an 8-core beast of a processor in your pocket and another one on your desk. But do you really know what happens inside the silicon at every single clock cycle? Driven by a pure love for bare-metal hardware and the KISS (Keep It Simple, Stupid) philosophy, I decided to build my own minimalist computer from scratch. Its beating heart? The legendary MOS 6502 (specifically, the Rockwell R65C02). No heavy OS, no high-level abstractions. Just pure logic, assembly, and raw silicon. The Backstory: A One-Year Hiatus To be completely honest, this project didn’t start yesterday. I actually designed and fully assembled the board a year ago. Back then, I was on fire: I spent hours mapping out the architecture, routing the PCB traces, and soldering the components. But right after assembling the board, the momentum dropped. The hardware went straight into a drawer, and the project stalled. I realized I had completed the visible part of the iceberg, but I completely missed the most important phase. A custom computer without firmware is just a beautiful, expensive paperweight. The real challenge starts now. The End Game: Running a Raycaster I’m digging the project out of its drawer to finally give it life. No more simulations. We are talking custom EEPROM flashing, memory mapping, and low-level bare-metal programming. But I’m not just aiming for a simple “Hello World” or a blinking LED. The ultimate, crazy goal of this project? Writing and running a 3D raycaster engine directly on this 8-bit machine. If you want to see how far we can push a 6502 processor with clever optimization and minimal resources, you’re in the right place. Here is what’s coming up in the next devlogs: EEPROM Programer: create a simple EEPROM programer based on a microcontroller. The First Boot: Writing the initial bootloader and basic I/O initialization. Memory Mapping: Figuring out how RAM, ROM, and peripherals will coexist cleanly on the bus. The Software Stack: Building the foundations to eventually support the raycaster graphics logic. If you love DIY electronics, retro-engineering, and optimization, stick around. **CHIPC 2.0 is officially alive. Stay tuned for the next post where we jump straight into the assembly code! **"}]...
|
Title: CHIPC-8 by @wilrakov | Stardance
Devlogs:
Title: CHIPC-8 by @wilrakov | Stardance
Devlogs:
“Let’s strip away the layers of bloated complexity. Welcome to the CHIPC adventure.” You probably have an 8-core beast of a processor in your pocket and another one on your desk. But do you really know what happens inside the silicon at every single clock cycle? Driven by a pure love for bare-metal hardware and the KISS (Keep It Simple, Stupid) philosophy, I decided to build my own minimalist computer from scratch. Its beating heart? The legendary MOS 6502 (specifically, the Rockwell R65C02). No heavy OS, no high-level abstractions. Just pure logic, assembly, and raw silicon. The Backstory: A One-Year Hiatus To be completely honest, this project didn’t start yesterday. I actually designed and fully assembled the board a year ago. Back then, I was on fire: I spent hours mapping out the architecture, routing the PCB traces, and soldering the components. But right after assembling the board, the momentum dropped. The hardware went straight into a drawer, and the project stalled. I realized I had completed the visible part of the iceberg, but I completely missed the most important phase. A custom computer without firmware is just a beautiful, expensive paperweight. The real challenge starts now. The End Game: Running a Raycaster I’m digging the project out of its drawer to finally give it life. No more simulations. We are talking custom EEPROM flashing, memory mapping, and low-level bare-metal programming. But I’m not just aiming for a simple “Hello World” or a blinking LED. The ultimate, crazy goal of this project? Writing and running a 3D raycaster engine directly on this 8-bit machine. If you want to see how far we can push a 6502 processor with clever optimization and minimal resources, you’re in the right place. Here is what’s coming up in the next devlogs: EEPROM Programer: create a simple EEPROM programer based on a microcontroller. The First Boot: Writing the initial bootloader and basic I/O initialization. Memory Mapping: Figuring out how RAM, ROM, and peripherals will coexist cleanly on the bus. The Software Stack: Building the foundations to eventually support the raycaster graphics logic. If you love DIY electronics, retro-engineering, and optimization, stick around. **CHIPC 2.0 is officially alive. Stay tuned for the next post where we jump straight into the assembly code! **...
|
1792950662.5785325
|
1793814662.5785325
|
|
6637
|
Order of Operation Maker by @kelvindabest | Starda Order of Operation Maker by @kelvindabest | Stardance...
|
kelvindabest
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Order of Operation Maker by @kelvindabest | Title: Order of Operation Maker by @kelvindabest | Stardance...
|
1793210225.4051733
|
1793815025.4051733
|
|
6638
|
My first slack bot! by @R-Fausto | Stardance
|
R-Fausto
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @R-Fausto | Stardanc Title: My first slack bot! by @R-Fausto | Stardance...
|
1792677176.3812416
|
1793281976.3812416
|
|
6639
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792936415.8679576
|
1793800415.8679576
|
|
6640
|
meow by @cyril | Stardance
|
cyril
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: meow by @cyril | Stardance
|
1793267375.9556055
|
1793872175.9556055
|
|
6641
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792928972.4752178
|
1793792972.4752178
|
|
6642
|
Bringing Light to The Darkness by @McKenna | Stard Bringing Light to The Darkness by @McKenna | Stardance...
|
McKenna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bringing Light to The Darkness by @McKenna Title: Bringing Light to The Darkness by @McKenna | Stardance...
|
1792792067.6194928
|
1793396867.6194928
|
|
6643
|
password generator by @sailor_lucas | Stardance
|
sailor_lucas
|
1
|
3.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T20:10:38Z", "hours": 3.0, "multiplier": 1.01, "payout": 3, "blessing": "neutral", "text": "i made a password generator to check and generate passwords", "repo": "https://github.com/lucasvaneijk/password-generator", "demo": "https://password-generator-checker-demo.netlify.app/"}]...
|
[{"post_id": 2697, "ts": "2026 [{"post_id": 2697, "ts": "2026-06-05T12:10:31Z", "hours": 2.6242, "text": "i made a simpel gui and some simpel code to work on i also added the directory"}]...
|
Title: password generator by @sailor_lucas | Stard Title: password generator by @sailor_lucas | Stardance
Devlogs:
i made a simpel gui and some simpel code to work on i also added the directory
Ships:
i made a password generator to check and generate passwords...
|
1793321806.4594483
|
1793408206.4594483
|
|
6644
|
My awesome macropad! by @extend | Stardance
|
extend
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @extend | Stardance
|
1793202737.1619995
|
1793807537.1619995
|
|
6645
|
My awesome macropad! by @KleinMoretti3249 | Starda My awesome macropad! by @KleinMoretti3249 | Stardance...
|
KleinMoretti3249
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @KleinMoretti3249 | Title: My awesome macropad! by @KleinMoretti3249 | Stardance...
|
1793206612.5636055
|
1793811412.5636055
|
|
6646
|
test2 by @aadya_panchal | Stardance
|
aadya_panchal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: test2 by @aadya_panchal | Stardance
|
1792785009.571029
|
1793389809.571029
|
|
6647
|
Burden Index by @LumiLovesYou | Stardance
|
LumiLovesYou
|
1
|
11.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T18:51:04Z", "hours": 11.0, "multiplier": 1.07, "payout": 12, "blessing": "neutral", "text": "First ship! ~ 100% functionality, just not pretty looks. I wanted to get some feedback and see what people think of the app first to then improve those parts before focusing on how it appears.", "repo": "https://github.com/lumilovesyou/Burden-Index", "demo": "https://lumilovesyou.github.io/Burden-Index/"}]...
|
[{"post_id": 29663, "ts": "202 [{"post_id": 29663, "ts": "2026-07-16T18:48:12Z", "hours": 1.6219, "text": "Functionality should be finished! ~ Sub list items have been fixed as well as saving has been added for them. Functionality should be complete and now I just need feedback!"}, {"post_id": 21544, "ts": "2026-07-03T15:48:53Z", "hours": 2.7506, "text": "Lots of time, little improvements. ~ Unfocused typing now focuses on the text box, you can tab around to check/edit items, as well as I attempted to add proper sub items. It did not work."}, {"post_id": 7025, "ts": "2026-06-11T19:41:42Z", "hours": 1.5447, "text": "Deleting, saving, AND better buttons! ~ You can (finally) delete tasks from the list! Also, changes to the list will automatically be saved and persist between reloads! I’ve also added better button handling so if you hold your mouse down and drag it off the button before releasing it won’t go through with the action. Almost done with functionality meaning I can start making it look nice!"}, {"post_id": 6901, "ts": "2026-06-11T15:52:29Z", "hours": 2.3167, "text": "Moveable items! ~ I did not realise how much of a pain it was to make moveable list elements, but it’s done! You can now cleanly re-order elements in the list using their handlebars while still being able to do things like double-click to edit them."}, {"post_id": 2463, "ts": "2026-06-04T23:39:31Z", "hours": 1.0403, "text": "You can add new items! Yay! ~ Lots of fiddling with CSS and JS to get things to act correctly but it finally works! (Zero CSS has been put into making it actually look good though..)"}, {"post_id": 1848, "ts": "2026-06-04T01:57:56Z", "hours": 1.4894, "text": "Checkboxes! ~ Yes, this took an hour. Yes, I had to make a custom toggle with JS. Yes, I tried styling a regular input type and couldn’t get it to work. No, I don’t want to talk about it. >:{"}, {"post_id": 1641, "ts": "2026-06-03T19:26:44Z", "hours": 0.4725, "text": "Just started a new project! ~ Nothing fancy, though. It’s a completely-local task management/to-do list. So, pretty generic. I thought it’d make for a good project to practice more advanced HTML metadata and project-structuring."}]...
|
Title: Burden Index by @LumiLovesYou | Stardance
Title: Burden Index by @LumiLovesYou | Stardance
Devlogs:
Just started a new project! ~ Nothing fancy, though. It’s a completely-local task management/to-do list. So, pretty generic. I thought it’d make for a good project to practice more advanced HTML metadata and project-structuring.
Checkboxes! ~ Yes, this took an hour. Yes, I had to make a custom toggle with JS. Yes, I tried styling a regular input type and couldn’t get it to work. No, I don’t want to talk about it. >:{
You can add new items! Yay! ~ Lots of fiddling with CSS and JS to get things to act correctly but it finally works! (Zero CSS has been put into making it actually look good though..)
Moveable items! ~ I did not realise how much of a pain it was to make moveable list elements, but it’s done! You can now cleanly re-order elements in the list using their handlebars while still being able to do things like double-click to edit them.
Deleting, saving, AND better buttons! ~ You can (finally) delete tasks from the list! Also, changes to the list will automatically be saved and persist between reloads! I’ve also added better button handling so if you hold your mouse down and drag it off the button before releasing it won’t go through with the action. Almost done with functionality meaning I can start making it look nice!
Lots of time, little improvements. ~ Unfocused typing now focuses on the text box, you can tab around to check/edit items, as well as I attempted to add proper sub items. It did not work.
Functionality should be finished! ~ Sub list items have been fixed as well as saving has been added for them. Functionality should be complete and now I just need feedback!
Ships:
First ship! ~ 100% functionality, just not pretty looks. I wanted to get some feedback and see what people think of the app first to then improve those parts before focusing on how it appears....
|
1793328476.890095
|
1793414876.890095
|
|
6648
|
LUNATIK by @g_jeanvermeille | Stardance
|
g_jeanvermeille
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T17:06:09Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built LUNATIK, a flight computer for our model rocket (Pico 2, CircuitPython) that fuses a barometer and accelerometer with a Kalman filter to detect apogee, logs to SD and streams LoRa telemetry. The hard part: we had one motor, so it had to work first try. I’m proud it did, calling apogee 0.45 s after the top while the motor’s charge fired 2.5 s later. To test without a rocket: python scripts/dashboard.py –simulate. Only coding hours were logged, not the hardware build.", "repo": "https://github.com/gabriel84-py/fus-e_code", "demo": ""}]...
|
[{"post_id": 75278, "ts": "202 [{"post_id": 75278, "ts": "2026-09-29T16:59:52Z", "hours": 0.4389, "text": "Documention for ship !"}, {"post_id": 75249, "ts": "2026-09-29T15:50:42Z", "hours": 0.3511, "text": "launching with avionics !!!"}, {"post_id": 70671, "ts": "2026-09-19T15:51:12Z", "hours": 11.8942, "text": "Launching LUNATIK (without electronics) and coding its flight computer to launch it in 1 week !!"}, {"post_id": 42061, "ts": "2026-08-06T16:53:48Z", "hours": 1.9433, "text": "Body of the rocket, some elctronics (PCB) and some code for the PCB !"}]...
|
Title: LUNATIK by @g_jeanvermeille | Stardance
De Title: LUNATIK by @g_jeanvermeille | Stardance
Devlogs:
Body of the rocket, some elctronics (PCB) and some code for the PCB !
Launching LUNATIK (without electronics) and coding its flight computer to launch it in 1 week !!
launching with avionics !!!
Documention for ship !
Ships:
I built LUNATIK, a flight computer for our model rocket (Pico 2, CircuitPython) that fuses a barometer and accelerometer with a Kalman filter to detect apogee, logs to SD and streams LoRa telemetry. The hard part: we had one motor, so it had to work first try. I’m proud it did, calling apogee 0.45 s after the top while the motor’s charge fired 2.5 s later. To test without a rocket: python scripts/dashboard.py –simulate. Only coding hours were logged, not the hardware build....
|
1793336000.115773
|
1793422400.115773
|
|
6649
|
My awesome macropad! by @AyushBhandari | Stardance
|
AyushBhandari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @AyushBhandari | St Title: My awesome macropad! by @AyushBhandari | Stardance...
|
1792658858.3176026
|
1793263658.3176026
|
|
6650
|
My first slack bot! by @DanteChambers | Stardance
|
DanteChambers
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @DanteChambers | Sta Title: My first slack bot! by @DanteChambers | Stardance...
|
1793364615.217987
|
1793969415.217987
|