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

Manonit

@Manonit

Joined June 12th, 2026

  • 14Devlogs
  • 2Projects
  • 1Ships
  • 15Votes
I love making things.
Open comments for this post

5h 11m 17s logged

##Devlog #14 - The Reviewer Arc 🥲
.
Well…
.
The reviewer found some issues 😭
.
So I went back and tested basically the ENTIRE project again.

.
While testing, I found and fixed a bunch of errors, especially in Advanced Encryption. I also added a lot of fallback checks throughout the code so Privournal doesn’t randomly decide to crash anymore 😭
.
I also improved the decryption flow.
.
Earlier users had to select journals using IDs, now they can simply choose them by name, which feels way cleaner.
.
Another addition was a user guide in menu. I was short on time and it was a no brainer, so I used Claude to help generate the guide content and then integrated it into Privournal. The goal was simply to make the different encryption modes easier to understand :)
.
Apart from code changes, I also polished the project page, uploaded a sample flowchart, improved formatting and timing, and recorded a completely new asciinema demo PLUS I updated the README too.
.
Then came final testing, packaging, uploading the latest release, and requesting review again 🤞🏻
.
Hopefully Privournal passes thru this time 😭
.
Thank you : )

0
0
9
Ship

I built Privournal, a command-line journal encryptor that allows users to encrypt and decrypt journal entries locally on their own device.

Because for me, someone reading my journal is a legit nightmare, and Privournal is something I can use to keep my digital journals secure.
For me that’s a clear quality-of-life improvement : )

Write your journal anywhere (Notes, Notion, etc), paste it into Privournal, get back unreadable text, paste that back into your app. No journal content is ever stored - only the encryption key, and that too locally, if you make an account. To read it yourself you can again head to Privournal and decrypt it!

It supports multiple encryption modes, including Basic Encryption, Advanced Encryption, Randomized Encryption, and **Swiption** - a dynamic encryption system that changes a letter's cover after a particular number of occurrences, making it impossible to crack.

The biggest challenge was implementing Swiption and its decryption logic. Managing occurrence tracking, rotating covers, JSON storage, database integration, and reliable decryption took multiple iterations and a lot of debugging. I also migrated the project from a MySQL-based architecture to SQLite after realizing a shared database conflicted with the goal of being fully offline and private.

I'm most proud of turning an idea into a complete, usable package that can be installed through PyPI. I’ve never worked on something so religiously on something of this complexity. The project ended up being over 1400 lines of code and taught me a huge amount about python, databases, GitHub and packaging, debugging, and obviously logical thinking. I’ve never worked on something so religiously on something of this complexity.

3 Major Quality-of-Life Improvements :
1. Zero-setup local encryption - Works completely offline with automatic SQLite database. No server or complicated config needed.
2. Powerful & flexible encryption - Multiple modes + Swiption (dynamic rotating covers) makes it much stronger than simple substitution ciphers.
3. Seamless workflow - Write anywhere -> encrypt -> paste back -> decrypt easily with account or manual key. Perfect for daily journaling : )

Try creating an account (or continue without an account), encrypting a journal entry, saving it, and then decrypting it again. Swiption and Randomised Modes are the most interesting and secure features to experiment with.

To test it, run these on terminal :

pip install privournal
python
>>> import MainCode
>>> MainCode.start()

Thank you so much for reading! : )

  • 13 devlogs
  • 34h
  • 17.48x multiplier
  • 480 Stardust
  • Frictionless
Try project → See source code →
Open comments for this post

16h 5m 57s logged

Devlog #13 - IT’S DONE DONE! The Final Chapter.

FINALLY. After two intense days and 16+ hours of grinding, Privournal is officially complete and ready for Stardance! 😭🎉

OH AND Yeah, it’s been two days - Long time no see 😭
.
Sorry for disappearing without posting Devlog #13 🥲
.
These last 16+ hours were so packed with debugging, packaging, testing, and polishing that I kept postponing the devlog. So this one covers the entire final stretch.
.
Btw hey I’ll upload the clean Flowchart on Git repo, and yk I was gonna write a LOT here with complete details, but damn there’s a limit. Well it’s oki i’ll add a list of all my devlogs to the repo too :)

What Happened?

I thought Devlog #12 was the “everything works” moment, but the final stretch turned out to be the work.

  • Audited every function in the codebase
  • Fixed dozens of lingering bugs
  • Cleaned up the entire code
  • Updated the README 10+ times
  • Set up PyPI packaging and releases
  • Recorded asciinema demos (Took enormous time 😭)
  • Added prettier output/interface functions
  • Tested every scenario I could think of

Major Change: MySQL → SQLite

One of the biggest changes was moving away from MySQL.
.
Originally, Privournal used MySQL with accounts and a shared database. Later I realized that requires a server, hosting, maintenance, and introduces privacy concerns.
.
So I redesigned everything around SQLite.
.
Benefits:

  • Fully offline
  • More private
  • Easier installation
  • Simpler deployment

Probably the biggest architectural change in the entire project.

Biggest Bugs Fixed

  • Login/signup flow issues
  • Missing database commits
  • Foreign key linking problems
  • JSON serialization/loading bugs
  • The infamous “extra spaces everywhere” decryption bug
  • Variable scope and traversal issues
  • Randomised Mode integration

By the end of Day 1, the core encryption/decryption system was finally reliable.

The Swiption Demon 😭

Swiption and SwipDe took forever.
.
The idea sounds simple: letters rotate through multiple covers after a certain number of occurrences.
.
Actually implementing occurrence tracking, rotation logic, life values, multiple dictionaries, JSON storage, and decryption logic nearly broke my brain 😭
.
The funniest part?
.
After hours of struggling I realized I had overcomplicated everything. Since every cover uniquely maps to a letter, I could simply search through the dictionaries instead of tracking a ton of extra information.

LIKE DAMN.

Swiption is now fully functional and ended up becoming my coolest feature in the project.

Packaging & Shipping

  • Cleaned up the repository
  • Improved README and documentation
  • Fixed PyPI packaging issues
  • Tested in fresh virtual environments
  • Published releases
  • Recorded final demos

✨ Project Complete

Privournal is now a real, usable command-line journal encryptor.

Thanks to:

  • My brother for catching early logic flaws
  • GPT for quick syntax rescues
  • Everyone who followed the devlogs
  • And myself for not giving up 😭

**Privournal is shipped and ready for Stardance! **

I’d love your feedback once you try it.
.
This project taught me something exams never did :
.
Working religiously on something with all your heart to make it real.
.
Thank you for reading all 13 devlogs ❤️
.
✨ See you in the next project ✨

| Project Complete | Ready to Submit | 🎉

0
0
5
Open comments for this post

1h 34m 26s logged

Devlog #12 - IT WORKS!

FINALLY! After an hour of debugging, EVERYTHING WORKS!

-Encryption
-Decryption
-Uploading to & Fetching from the Database
-Sign Up
-Login
.
The only things that aren’t fully working yet are Swiption and Random Mode, and honestly that’s on me 😭. I got way too focused on making everything else work first AND GOD I had to improvise whole sections of the decryption logic, you won’t believe it.
.
If you compare the code I committed before this and the code I committed today, I had to improvise so much!
.
I removed and added so much. My old decryption was code wrong, I mean the logic was on point but the syntax and a few other things were off that’s why it wasn’t working.
.
Some of the errors were genuinely silly, again 😅
.
All my elifs somehow had the same condition, and people this is why you don’t copy paste conditions to save time (I still don’t know how I missed that) 🥲
.
My traversal i was a string, and I kept accidentally treating it like an int iterator, I mean ugh.
.
A lot of bugs were literally sitting right in front of my eyes.
.
Some bugs were much bigger tho. One of the weirdest happened after I finally got decryption working - The decrypted text had way too many spaces between words.
.
After staring at it for a while, I noticed that the number of spaces was exactly the same as the number of unique letters in the text. That’s when it hit me - the loop was continuing to run even after finding a match. Few “breaks” later hehe, everything worked 😭
.
After Swiption and Random Mode, those 2 really aren’t done right now, I’m sorry I type so slow 😭
.
Yeah so after that I’ll focus on making the code look real pretty, like
-Fixing my silly variable names
-Comment notes ig?
-Better spacing and formatting
-Cleaning up extra files
-Writing a proper README and project description
.
And yes…
On the 13th Devlog, the project will be done done 🤞🏻
.
Note : I improvised all my previous devlogs, with proper format so that it’s easier to read, you can tell me if it’s better 🙃
.
See you in the next one!

0
0
5
Open comments for this post

3h 7m 43s logged

Devlog #11 - First Successful Test!

Let’s go!!!
.
First successful test done 😇
.
The database fetching works, the encryption flow works - it wasn’t working earlier tho (And I spent an hour finding errors, like i’d run it again n again and also ended up rewriting portions, like my Advanced Encyption code was all messed up 😭)
.
But yes, now it’s working, i’m sure there are a couple more errors but i’m on my way to fix em!
.
And yk some of the errors were so silly - I had written input(“Enter cover for”,x), and damn i failed to realise what the issue was.
.
Then after a lot of trying I asked GPT and it said it’s cuz input() can only have one argument in the braces 😅
.
A lot of other errors too were like me getting all confused btw variable names, function not being global and so on.
.
But yeah, one at a time i fixed em, fixed the code and now only the refining of the code and some other bugs remain.
.
And um I had said i’d do it in 10 devlogs, but ah now it looks like 12th would be the last one.
.
But hey, the more the better, ig? 😭
.
See ya in the next devlog!

0
0
7
Open comments for this post

4h 4m 45s logged

Devlog #10 - A Slight Setback

This is going to be the biggest devlog. And this one’s gonna be a disappointing one 🥲
.
First of all, I was talking to my brother and he asked such a good question - It pointed to a flaw which I didn’t notice at all.
.
Let’s say there’s a word “am” in the journal, a’s cover is 1 and m’s cover is 27 (so am = 127). Now cuz there’s not spacing the decryption code will actually traverse thru each of number at a time in the encrypted text (127), so it’ll literally convert 1 and then 2 and then 7 separately. This was such a major flaw in my logic and I’m still agonizing internally over the fact that my eyes missed it.
.
But ah it’s ok, I’m fixing that by simply making adding a trailing space after the cover to separate each letter’s cover.
.
There was so much running and errors and staring at screen and all that.
.
Another thing I noticed is that in Advanced Encryption when the user will choose covers for 52 letters, he might accidentally repeat a cover - which obvi will make it impossible to distinguish btw 2 letters. So I gotta add each cover to a list and then every time the user adds a cover i’ll see if it’s already there in the list or not.
.
Now these flaws I got to know when I was talking to my brother, and it was past midnight. So almost immediately after waking up I was onto fixing these flaws, and it’s in progress :)
.
Apart from that, I’ve been refining the code (Found some silly errors in functions) and fixing more logic issues.
.
Earlier the Encryption Key that I was using to decrypt, it was a dictionary - with the keys as letters and values as the cover. So before uploading them to the db table, I converted them into text. But then while fixing decryption code, I did tried dict(the string key) and later found out that it all doesn’t work like that, the syntax.
.
I checked online, asked GPT, he suggested that I use the json module, and so I did. Json made it pretty easy, now the conversion was smooth and 2 liner.
.
Also I fixed all the login/signup system, it works as smooth as butter now Hehe
.
I’d say the main issue wasn’t the code it was following where am I.
.
Like cuz there are so many functions and steps and paths that I was getting overwhelmed (plus the code is like 600 lines), so I basically carefully went thru each line of code and arranged each function in an order and side by side made the final flowchart (It made following the code super easy and looks cool tbh) - But yes that’s hectic work right there.
.
Now after all that…
Does the code run?
HELL NO IT DOESNT!
.
It’s still showing 21 errors 😭 Plus, Swiption’s still left.
.
So right now, I’m trying to fix the flaws and errors and get this code up and running without Swiption, once it is smooth then at the end I can code Swiption into it.
.
See ya in the next devlog!

0
0
8
Open comments for this post

1h 11m 1s logged

Devlog #9 - This was unexpected…

Turns out there were some issues in the decryption function. It completely ignored spaces while decrypting, which definitely wasn’t ideal 😭
.
I’ve fixed that tho.
.
Also I remade the tables in database with much more info such as date of encryption and email (for forgot password purposes)
.
And this code was getting too long, like more than 400 lines long.
.
So, I’ve started splitting things into different files to keep everything organized. Db code has its own file, big functions like AdvEn() have their own file, and the same goes for Swiption and Random Encryption logic.
.
Target’s to finish the code tonight.
.
Thanks for reading!

0
0
6
Open comments for this post

1h 8m 11s logged

Devlog #8 - The Eights.

.
So this would be Privournal’s 8th devlog, and this one feels kinda special :)
.
My birthday falls on an 8th too, and I just love the number 8.
.
Anyways, I was actually supposed to be done with the Swiption feature by now, but I just couldn’t help myself and started working on the Random Encryption feature.
.
Reason’s that it just came to me -
.
Why not make Random Encryption available for both Advanced Encryption AND Swiption too??
.
This would make the whole Encryption process super fast if some user doesn’t want to manually encrypt each letter. So I’m onto that, then I’ll immediately look into Swiption.
.
Then finally I’ll refine the whole code and just go through all the variables, functions and rename them if needed (I’m one of those people who name the variable something silly and forget what it was for 😭)
.
I’ve also started mapping out the overall visual flow of Privournal cuz it was getting a bit confusing.
.
I’m thinking abt wrapping this project up in about 12 devlogs, and then launching it.
.
You can also check out the GitHub - I’ve been committing code changes on it regularly :)
.
Thanks for reading!

0
0
5
Open comments for this post

1h 42m 55s logged

Devlog #7 - Almost There!

Only the Swiption feature remains!
.
I’ve also been thinking about adding another cool feature where the covers are randomly chosen using Python’s random module. The idea is that it’ll be added in Custom Encryption.
.
Also, my bad 😭
.
I sometimes refered to the Custom Encryption as Advanced Encrytion, that might confuse you - but i’ll be consistent with names now. It’s just that it’s the start and so many features and ideas just mush into my head 🙃
.
Once Swiption is done, the Python version should basically be mostly complete, and then it’ll be time for da next step
.
Getting all this on a website, tho that is gonna be really difficult for me, I really don’t know how to make websites 🥲.
.
Not gonna lie, that part scares me a a lot cuz I don’t wanna use AI for the website 😭
.
I really don’t know much about web development, but I guess that’s part of building a project. You learn whatever you need as you go.
.
Thank you so much for reading these devlogs tho :)
.
Hopefully tmrw the code will be done and I’ll be one step closer to completing Privournal!

0
0
6
Open comments for this post

1h 4m 42s logged

Devlog #6 - Advanced Encryption!

Pheww, this part took some effort!
.
Today I worked on the main encryption logic for Advanced Encryption, and after a lot of thinking, coding, testing, and rethinking, I finally got the foundation for it down :)
.
This is one of the core features of Privournal, so it feels really good seeing it slowly come together.
.
That said, this is only a small win
.
The real challenge is gonna be the “Swiption” feature. Bet Swiption is gonna take half my brain cells 😭

0
0
5
Open comments for this post

28m 5s logged

Devlog #5 - Database Established!

.
Now the basic outline has to be perfected, with each and every thing being functional.
.
After spending some time figuring out SQL, databases, connections, and all that stuff, I finally managed to get Python talking to the database successfully :)
.
Seeing actual records being fetched felt pretty satisfying not gonna lie.

For now, the goal’s

  • Add features and make everything functional
  • Connect everything together
  • Improve the overall structure

On the way to do that!

0
0
6
Open comments for this post

58m 33s logged

Devlog #4 - Still on the Db thing

.
Hehe, my highschool Python-SQL interface notes are coming in handy!
.
When I was studying this stuff, I honestly didn’t think I’d ever end up using most of it cuz it seemed too basic Turns out I was wrong :)
.
Since Privournal is gonna need a database for account credentials and all that, I’ve started revising my old notes and figuring out how everything fits together.
.
Let’s see how this goes!

0
0
5
Open comments for this post

39m 40s logged

Devlog #3 - The Plan’s Shape Guys!

.
Errors fixed and a basic outline has been made (This time on a paper Hehe)
.
AND i’ve thought about how i’m gonna go about it!
.
I’ve also spent some time thinking about how I’m actually gonna build this thing.
.
I’ll have to make a sql database ig (For account credentials and encryption details) and link it to my python code. I’m still new so i’m not sure if the sql database method for keeping records is how the real companies operate, but still seems pretty nice.
.
And I mean these are journals that we’re talking about, - so security and privacy matter a lot.
.
Tho my whole idea and code is that the actual journal entry is never stored. Only the encryption sequence and logic is.
.
That way, even if some dummy somehow got access to the database, they wouldn’t find the journal itself (Hehe can’t outsmart me)
.
For now, the plan pretty clear:

  • Finish the Python main code
  • Get encryption working properly
  • Add database support
  • Convert it into a website

Well, that’s it ig.
.
I’m gonna go and tmrw complete the whole thing in python and then yes - hopefully convert it into a website :)

0
0
5
Open comments for this post

57m 42s logged

Devlog #2 - The First Error and an Outline

.
Ran into the first error, phewww!
.
Honestly, had it coming - things were going way too smoothly for a rather newbie like me 😭
.
I was working on the account system and trying to get the signup and login flow working when I hit the error. I also created a basic outline of flow (In my mind 😅)
.
Spent a good chunk of time staring, retracing my code, and trying to figure out what exactly I had written wrong. But yes, I’m on it!

0
0
6
Open comments for this post

31m 25s logged

Devlog #1 - The Beginning

.

Today wasn’t about building features but about getting everything ready.

.

I finished setting up the Github thing (Took me an hour lol), cleaned things up, and wrote the first version of the README.

.

It might not seem like much, but damn did it feel so hectic, maybe cuz it’s my first time working on a real software project :)

.

After the setup, I finally started writing the core code.

.

Right now it’s just the foundation and an outline that I’ve set out to achieve :)

.

The journey begins!

0
0
6

Followers

Loading…