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

dylank

@dylank

Joined June 1st, 2026

  • 13Devlogs
  • 2Projects
  • 1Ships
  • 15Votes
Learning Chinese and making an app to help me do so, 禅文 Zenwen. First & last year of Hack Club so let's make it count.
Open comments for this post

37m 14s logged

Todoly: Devlog 1

Not much to say for today.

Came up with the idea for the app, a todo app that keeps you accountable.

Made the architecture for the files and the basic layout. Now I gotta learn about local file storage.

0
0
6
Ship

# 🏯 禅文 Zenwen Ship #1

Learning Chinese is hard, Zenwen makes it easier.

Use the live page here: [Zenwen Demo](https://randowhocodes.github.io/Zenwen_Demo/)

Bear in mind, it's a demo, so no data is saved. As soon as you reload it'll be lost.

More info on running locally here: [Main Repository](https://github.com/RandoWhoCodes/Zenwen)

---

### What even is 禅文 Zenwen?

Zenwen is an app to help you learn Chinese, and other languages if you wish.

As of this ship, Zenwen is a vocab system designed to work for just about any need a user wants, while simple and easy to use.

---

### What was challenging

First and foremost, learning Flutter was challenging. Dart is simple enough, but Flutter was something I had never seen before.

The second challenge was figuring out an efficient data structure to store the many things users can create. This was challenging because I had to figure out how to store many decks with many vocab, while also being able to sort through them, search them, delete data, and access them quickly.

---

### Why I am proud!

What makes me proud is that I learned an entire new framework and a lot about data storage that I had previously never touched. Learning this unlocks a whole world of coding opportunities that I'm excited to explore!

Another thing I'm proud about is that I've learned how to debug better. I have learned how to use print functions usefully as well as things I previously didn't know would cause errors.

  • 10 devlogs
  • 21h
  • 11.65x multiplier
  • 243 Stardust
  • Frictionless
Try project → See source code →
Open comments for this post

26m 29s logged

🏯 禅文 Zenwen Day 11: SHIIIIIIIP!!!!

Finally! Zenwen is shipped for the first time!
(but expect lots more to come)

Live demo here: Zenwen Demo, bear in mind all data is temporary and will be lost if you refresh.


QoL Improvements

Learning languages is no longer tedious. Handle everything you need in 1 place without complications.

  • Supports every language! There are 3 things you can add when creating vocab: character, pronunciation, meaning. This means you could translate Egyptian hieroglyphics to Hindi as a French speaker if you really wanted to.
  • Search for decks, and vocab! Forgot what deck some vocab is in, or just have way too many decks? No worries, just search for it!
  • My Dictionary, all your vocab in 1 place! Simply want to see how much vocab you have or are just skimming through what you know? This is the perfect feature for you.

🐉 Chinese word of the day:

  • 进步: progress, to make progress
  • Pronounced: jìnbù
  • Example: “我有了一点进步”, “I have made a little progress”
3
0
52
Open comments for this post

44m 35s logged

🏯 禅文 Zenwen Day 10: EVERYTHING WORKS!!!

Finally!


What I did during these 44 minutes

Long story short, there was an indexing error when a search result wasn’t found.

It was supposed to give a message like “no results matched your search”, but instead, it gave a big scary red screen saying “index is supposed to be less than 1: 1”.

I had no clue what was wrong. Took a while to figure it out.

Turns out I was stupid and trying to do widget.myDictionary.length when I was supposed to do widget.myDictionary["vocab"].length.


What’s coming next

Ship!

Everything is ready. Expect a ship tomorrow if I can set up the demo correctly!


🀄 Chinese word of the day

  • Word: 买
  • Pronounced: mǎi
  • Example: “我买了筷子。“ - “I bought chopsticks.”
0
0
25
Open comments for this post

51m 43s logged

🏯 Zenwen Day 9: everything works!

Well, for now, at least.


Overall, pretty quick and easy day. Simple bug fixes, simple feature expansions.

What I did

  • Fixed logic for when it was searching through My Dictionary for Strings that match the search
  • Switched some 0s to 1s and stuff so it wouldn’t make duplicate search results or have indexing errors
  • Added a search bar to the edit deck page so now you can search from every screen!

What this means

I’m almost ready to ship!

Project works well enough to be tested, GitHub is up to date with commits.

All I need to do is make the README and get a live web demo up and running!


🀄 Chinese word of the day

绿茶 (lǜ chá): Green Tea

  • 我喜欢喝绿茶!
  • I like drinking green tea!
2
0
191
Open comments for this post

2h 21m 29s logged

🏯 禅文 Zenwen Day 8, SEARCH BAR WORKS (mostly)!!!!

Learning Chinese is hard. Zenwen makes it easier.


Create infinite decks and vocab and find them easily!

Apparently Expanded() widgets can only go in certain other widgets, so I was stuck solving bugs for nearly 45 minutes. Sometimes I question why I like coding.

The logic for searching vocab is broken, but that was just me being dumb. Should be easy enough to fix.

Will need to do heavy optimizing after I ship because I wrote it in probably the least efficient way possible, but it’s fine for now.


Chinese word of the day: 飞机 (fēi jī)

  • Means “airplane”
  • ”这是飞机” = “this is an airplane”
0
0
143
Open comments for this post

3h 29m 43s logged

🏯 禅文 Zenwen Day 6 & 7 (I swear that isn’t on purpose)


TL;DR

  • Finished My Dictionary; now there’s a master list of all your vocab! Great for if you want to see your progress or just forget a word.
  • Starded working on a search bar!
  • Worked on making my computer less laggy (no time logged for this)

The Search Bar

What’s the point in being able to make a bunch of decks and vocab if it takes too long to find them? Exactly, there is none.

Today I started working on adding a search bar to the header of the app.

Surprisingly, the logic behind it is pretty simple. Just iterate through the Maps and Lists. If an item matches your search, add it to a results Map.


What I Learned

You know those simple, boring headers at the top of basically every app?

That’s what us Flutter devs call an AppBar.

Apparently, AppBars have multiple parts:

  • leading
  • title (already knew about this one)
  • trailing
  • actions
  • bottom

The bottom is what I use for the search bar. Essentially, the bottom is an extension of widgets that are below the title.

In order to make it work, you need to give the Scaffold (the parent of the AppBar) specific details about the extension so that it renders properly. Specifically the height, which can’t be dynamic.


🀄 Since you made it this far

Chinese word of the day: 吗 (pronounced “ma”)

  • used to turn a statement into a yes or no question
  • 你喜欢茶: You like tea.
  • 你喜欢茶: Do you like tea?
2
0
377
Open comments for this post

2h 38m 50s logged

🏯 禅文 Zenwen Day 5: documenting & my favorite feature!

(and fixing 1028 issues with my computer)


⌚ TL;DR

I added lots of comments to the code so that future me & other people can easily understand the code. Also started adding a cool feature called My Dictionary.


📝 Adding comments (finally)

Wanna know something I never do? Add comments.

Well at least not until today.

Today I spent most of my time doing a well needed cleanup of the codebase, adding comments and making it readable to future me and other people.

Since flutter can quickly start looking like a random jumble of widgets, adding these comments really helped me understand exactly what everything is doing and will help others understand as well.


📕 My Dictionary, my favorite feature!

I also started working on adding a major QoL improvement, a deck that contains all the vocab you’ve created.

Have you ever had a word on the tip of your tongue but just can’t quite remember it?

That’s no longer a problem.

With My Dictionary, you can open it up and quickly search up that word in just 3 clicks.

You can also see how much vocab you have created, which feels amazing when you see how much you’ve learned!

🪲 1028 issues with my computer

Don’t ask.

I don’t have any answers for you.

I checked Lenovo Vantage and now it finally makes sense why my computer struggled to run the file explorer.

After a few hours of a well needed scan and fix by Lenovo Smart Performance, my computer now runs (mostly) smoothly once again.

0
0
58
Open comments for this post

2h 17m 10s logged

🏯 禅文 Zenwen - Devlog 4️⃣

👋 你好! Zenwen is an app to help people learn Chinese. As someone with a 970 day Duolingo streak, I know what us language learners need.


⌚ TL;DR

HIT THE 10 HOUR MARK 🎉

Today I made the vocab page and made it so you can delete decks. I also polished up the graphics a bit.


📕 What I Learned

Today I learned lots of useful things!

I learned about some new styling for Material() widgets, along with 4 new widgets:

  • Stack()
  • IntrinsicHeight()
  • Expanded()
  • Padding()

Also learned how to make if else statements in ListView.builders!


🗣️ In depth summary

Today’s main objective was making the vocab page.

To do this I used a simple ListView.builder to iterate through the vocab lists.

One issue I had was the layout of the vocab. I wanted an equally spaced horizontal layout with a delete button floating at the right.

This was a problem because I only knew about the Row() widget. In order to get the layout I wanted, I had to learn about Stack() and IntrinsicHeight() and Padding() and Expanded().

Another thing I ran into was that it crashed when I deleted all the decks or all the vocab.

In order to fix this I learned about if else statements to create different widgets based on the conditions!


👣 Next Steps

I’m almost ready to ship!

I still have to make a few things though: a master vocab deck, and ideally a search bar. If the search bar goes well then I can also add filters for the decks if I decide it’s worth it.

0
0
54
Open comments for this post

2h 55m 20s logged

🏯 禅文 Zenwen - Devlog 3️⃣


你好! Zenwen is an app to help people ACTUALLY learn languages. As someone with a 970 day Duolingo streak, I know what us learners need.

The first thing I’m making for the app is vocab decks, and I’m almost ready to ship this!

Today was focused on displaying the actual vocab in the decks as well as being able to add new vocab.

Learned a lot about how to handle inputs in Flutter. This morning I realized my button layout wasn’t very convenient for users, so I had to rearrange it, which forced me to learn about InkWell, which will help me learn a lot moving forward.

0
0
57
Open comments for this post

1h 49m 24s logged

🏯 禅文 Zenwen - Devlog 2️⃣


你好! Zenwen is an app I’m making with Flutter to help people ACRUALLY learn languages. As someone with a 970 day Duolingo streak, I know what us language learners need to actually be successful.

Made a lot of progress today!
I developed a basic display of vocab decks, which includes: title, description, practice button, edit button.

Also made a way to create new vocab decks, by clicking the button at the bottom right.

You can’t view or add vocab yet, that’s hopefully coming tomorrow.

The UI is pretty bare bones right now. I’m focused on functionality before I make it look good.

As for bugs I encountered, the entire app crashed when I switched from using a stateless widget to a stateful widget. Quickly discovered this was me being stupid because I forgot to restart the app. Apparently hot reload doesn’t like big changes between stateless and stateful.

0
0
62
Open comments for this post

3h 18m 47s logged

🏯 禅文 Zenwen - Devlog 1️⃣


Zenwen is (will be) an app to help people ACTUALLY learn languages like Chinese. As someone with a 960 day Duolingo streak, I know exactly what us language learners need.

My first ship will be a tool for making and studying vocab decks to seamlessly fit in with your day.

Today was a short but productive. The app is basically just a blank screen on the front end, but the systems are falling into place in the code.

Today I developed the system for storing vocab decks.

Now it should be fairly easy to add flashcards and other study tools.

The first hour or so of the day was spent fixing VSCode because lots of things were breaking. It said my phone was connected, but it wouldn’t show up. The Flutter extension also stopped working.

Changed the name from Zhenwen to Zenwen. Zhenwen has religious cultural meanings, so I want to respect that. 真文 means “true text”, which has meanings in Taoism. 禅文 (technically chánwén) essentially means “peaceful language”.

For your entertainment here is a screenshot of a stupid bug that confused me for 30 minutes. 99k pixel overflow.

Can’t wait to see what the next week will bring and watch this app come to life!

0
0
53

Followers

Loading…