You are browsing as a guest. Sign up (or log in) to start making projects!

Cassetu

@Cassetu

Joined June 2nd, 2026

  • 11Devlogs
  • 3Projects
  • 1Ships
  • 15Votes
A Game & Software Developer, Youtuber and Chill Guy :D

Itch (Games): https://cassetu.itch.io
Novara - Learning Website: https://cassetu.github.io/Novara

Do NOT call AI work your own. That's called Plagiarism.
Open comments for this post

1h 30m 36s logged

v1.03.78 | 6-27-26

Refactored how navigation flows when a user enters an active lesson block. Previously, I had the topbar fade down to opacity: 0.5 via a body class state, and a separate, clunky #lesson-back-btn floating fixed at the top-left of the viewport. It wasn’t great, and I thought i could do way better.

So instead i cleaned it up, removed the fade, and pretty much “hijacked” the main elements. The standard topbar elements were set to display:none; with the user profile button getting set to half opacity and non-clickable. changed existing #nav-explorer slot by transforming its text to ← Return and changing its weight.

also changed the if (!confirm()) basic alert for my better error alert box. duplicated the old alert box and made another for this one, fit with a cancel button and all.

The main obstacle was handling the application’s default click-routing initialization handlers. Simply changing the .onclick property didn’t work because hidden layout listeners attached via .addEventListener() were catching the event bubbles and dumping the user back to the main curriculum selector immediately anyway. (because remember were hijacking the explore btn)

Fixed it by utilizing Event Capturing:

topNavBtn.addEventListener("click", window.activeTopbarGate, true);

by passing true, the browser catches the user’s click at the absolute top of the DOM tree before the default routers can see it. Inside the wrapper, i ran e.stopPropagation() to stalls the execution chain while the custom gate logic processes.

standard browser alerts freeze javascript synchronously, but custom DOM boxes are asynchronous so a normal return gate wouldn’t cut it. i solved it by wrapping all my navigation cleanup loops inside a functional callback and passing it straight into the dialog box. hit OK, the callback fires and drops you out of the lesson; hit cancel, it just clears the overlay div out of the DOM tree so you can keep working.

its like weaving a thread in a spiderweb (T - T)

also wut u guys feel about the better formatting lemme know, i don’t want it to sound like i just copy pasted chatgpt but i want to explain it better so im a bit conflicted

0

Loading discussion…

0
9
Open comments for this post

2h 2m 50s logged

Devlog 2

Added javascript functionality for the map grid population. Also added tag, version and gamemode sorting. Finding the right map is way easier!

Improved the design of map grid cards, tags, and sorting dropdown menu.

Added 2 maps (Void & 4 Buttons). Download them to try it out in minecraft!

(also trying out italics for better devlogs! :D)

0

Loading discussion…

0
10
Open comments for this post

1h 43m 39s logged

Devlog 1

Built the base of the website. I got the hero text, background image, and topbar. Currently there aren’t any downloadable maps or functionality besides the searchbar dropdown.

Luckily for me, Blockbench has an easy Minecraft Title creator, so i can make a high quality title for my website. I’m planning on making a javascript system to populate my map grid from the database, but thats for future me to work out.

0

Loading discussion…

0
9
Open comments for this post

1h 36m 39s logged

v1.03.65 | 6-20-26

Refactored URL routing logic so it sits in one function routeFromURL making it easier to reuse. Before I just had the code duplicated in two places as a quick implementation, and also the back/forward buttons didn’t do anything because there wasn’t a popstate listener yet. Now i have window.addEventListener("popstate", routeFromURL) to fix that issue.

Added a Privacy Policy page matching the Journal Layout, now users can trust Novara (little more than before at least) to keep their information safe when they sign in.

Started a test cooking curriculum, using the cookingSim and HeatControl additions.

Also added an Abstract0, Abstract1, Abstract2 assets to be used later. Abstract2 already implemented into an 404 page and the practice panel when the user isn’t enrolled in any curriculums. fetchCourseData now wraps its fetch in a try/catch and calls show404() on failure.

0

Loading discussion…

0
14
Ship

### Novara v1.03.56

Novara is a **free** learning website, It has multiple courses with varying lesson types, so information is presented and tested in many ways.

## Features include:
- **Focused Learning**: Enrollment is limited to a maximum of 3 curriculums at a time to encourage focus and prevent overwhelm.
- **Structured Content**: Curriculums contain courses, and courses contain modular lessons.
- **Knowledge Checks**: Built-in quizzes to test your knowledge at the end of courses.
- **Progress Tracking**: Visual indicators to show completed lessons and remaining coursework.

The main architecture is designed using HTML, CSS and JS. Designed to be modular, so adding another course/curriculum is easily done by writing one single json data file.

## AI USAGE DISCLAIMER
AI is used in the generation of our courses. We have not yet received assistance from subject-matter experts in developing our curricula.

To maintain quality, the AI is guided by strict instructions designed to reduce low-quality content ("slop lessons") and encourage materials that engage students in critical thinking and active learning.

Despite these safeguards, mistakes and errors may still occur. If you find an issue, please report it by emailing: cassetunium@gmail.com (Responses take 3-5 business days).

Thank you for helping us improve.

README + More Details here: https://github.com/Cassetu/Novara#table-of-contents

TRY IT HERE!: https://cassetu.github.io/Novara/index.html
(To access full content you must sign in/register)

  • 8 devlogs
  • 10h
Try project → See source code →
Open comments for this post

2h 3m 42s logged

v1.03.55 | 6-16-26

I added a new lesson type, “cookingSim”, it currently only has one simulation “heatControl”. Its a simple minigame for monitoring heat. Later I will have several cooking simulations, and use them in a cooking curriculum.
The reason for creating special simulations, is because cooking is a visual and hands on thing, you can’t learn to cook by simply reading and answering questions about it.

I’m also working on wiring together a way for the url to reflect the current view, that way you can bookmark specific courses or share specific curriculums.
The main focus of it is: history.pushState() and window.addEventListener("popstate").
Another important part is this:

const params = new URLSearchParams(window.location.search);
const view = params.get(“view”);
const id = params.get(“id”);

so on page load, you can get the right viewport, eg: ?view=syllabus&id=js-course, would show "syllabus" and "js-course".

Since its on page load the code is primarly residing in window.firebaseAuth.onAuthStateChanged since that part automatically signs in the user and skips over the authentication and homepage process if the user has signed in before.

0

Loading discussion…

0
18
Open comments for this post

2h 10m 10s logged

Added a custom theme tool, automatically generates the code so users can easily build a unique & polished ui.

Easy access in topbar for signed in users and non-signed in users.

Test it out here: https://cassetu.github.io/Novara/html/themeTool.html

(STOP CONSOLTING AI FOR THEMES:

  • Too generic
  • Awful “Extreme Glassy Gloss” style
  • Always weirdly rounded corners )
2

Loading discussion…

0
426
Open comments for this post

22m 10s logged

fixed some bugs as the focus for today (v1.03.37)

error overlays were stacking in the DOM, so i made a showError() function instead of copy pasting the same code everywhere

also fixed activeCourseRef being stale after practice sessions, was sending users to the wrong place

0

Loading discussion…

0
6
Open comments for this post

42m 49s logged

Novara is actually a project of mine that I’ve been working on for a while. (Since May 6th)

I just got back into it and added an inline alert box, since the native alert box is shown to be less intuitive and more hostile to users.

Most Devlogs here will be some form of iteration of my onsite Journal, but more in depth, and more focused.

0

Loading discussion…

0
6

Followers

Loading…