LexiQ banner

LexiQ

16 devlogs
37h 4m 26s

An intelligent vocabulary building app.

This project uses AI
  • To Populate DB
  • For Debugging
  • For UI help
  • To Deploy on heroku
Demo Repository

Loading README...

Hash

Shipped this project!

Hours: 18.91
Cookies: 🍪 319
Multiplier: 16.86 cookies/hr

Second Ship! (Last Ship)
First ship had a pretty bad UI, this one is not the best but it works, and a major feature was missing, the quiz feature, I added that too, and because it was second ship, thought why not optimize some stuff from previous ship to get that juicy RAM.

Read -> Hover to see Details -> Click to mark is weak work -> Attempt Quiz

Hash

Optimization:

  • Lazy Loading
  • HTTP Caching
  • Removed Unnecessary Dependencies

Lazy Loading:

  • This one was pretty simple, used react’s magic. although as expected it didnt make a significant difference on my small site.

HTTP Caching:

  • Added HTTP caching using django utilities, endpoints like /paragraph/<:id> and /word/<:word> are called often with same arguments, so HTTP caching made a significant difference here.

Removed Unnecessary Dependencies:

  • I was using axios, it was not really unnecessary, but gotta do optimization for the sidequest, so made my own simple api objects with .get and .post methods.

Changelog

Attachment
Attachment
0
Hash

Progress:

  • Finished the Quiz module.

Detials:

  • Changed quiz models to support a different system, earlier question had a quiz foreign key, now its a many-to-many relation cuz that makes so much more sense, also added some fields to different models, like state for quiz. Set up a randomized Quiz generator, it does prioritize the words user marked as weak, but still in a random order. Used approach to make frontend request for each mcq separately and protected correct option from client.
  • For frontend used co-pilot to create a template and then worked on it to customize it. Kept the very minimal design.

Changelog

Ai was used in this commit

Attachment
Attachment
Attachment
0
Hash

Progress:

  • Made frontend for paragraph/read/
  • Adjust paragraph rendering
  • Laid down foundations for Quiz feature

Frontend Changes Details:

  • Instead of just coping from older page, made it from scratch, just like entire app’s design had to keep it simple and minimal. So it will contain only the required information. Paragraph to read and the information box.

Paragraph Formatting Changes:

  • In old login .split() method of strings was being used to separate words, this caused some unnecessary elements. So instead used a custom method to split words. Also added logic for newline characters and symbols in frontend.

Quiz Feature Details:

  • Changed quiz model to use Lexeme as Foreign key, this will allow us to track weak words down for a user and prioritize these words’ mcqs in quiz. Also used the utility ai script to generate MCQs for words, and used co-pilot to seed them in DB.

Changelog

AI was used in this commit

Attachment
0
Hash

Progress:

  • Split paragraph page into two parts.
  • UI changes

Details:

  • Previously there was just one page for paragraph selection and reading, Now there is a new route for reading, so /paragraph and /paragraph/read/. It should have been like this from start but it was my mistake, as things started getting complicated the code started to get messy, I think this new version with two files and two routes is much better.

Changelog

Attachment
0
Hash

Progress:

  • Changed the models to fix the issue of multiple words with same meanings. Optimized storage.
  • Add 1 long paragraph with details of its every word to DB

About Data Base Changes:

  • Previously there was just one word model, so for two words having same meaning, two rows were being created, it was a bit messy, so I split it into two models Lexeme and WordSense, Lexeme right now has just one field thats word, and WordSense contains all the details about a sense, so many WordSense can have one Lexeme foreign key, This might be helpful in future when instead of strictly spelled same words getting same Lexeme we can add different forms of words get the same Lexeme, so one lookup to run can fetch all the related words like running and ran.

About Data Seeding (less technical, more yap):

  • Last DB wanst perfect, it used gemma-4 model so word details were pretty bad, This time i spent a lot of time on it, so i found a paragraph pretty early with around 240 words, but I needed details of those 240 words, that is 17 different fields per word, none of the API’s provided all of the fields, so I used a ton of co-pilot to generate scripts to make api calls to gemma4 to make JSONs, then refined those JSONs by going back and forth between different AIs and APIs and then finally used co-pilot to create a script to seed that data into DB.

Changelog

AI was used to do some tasks in this log

Attachment
Attachment
0
Hash

Progress:

  • Deployed website
  • Add AI utility to be used later

The image is of structured response returned by gemini about a word.

Attachment
0
Hash

Previous ship got rejected because it used demo credentials to login, so setup signup system.
There is no verification such as email OTP or link right now, but i think it works for now.
Before requesting a recertification, i will improve some other bits of Ui first.

if anyone is actually reading this logs, you will know i tried to hurry and ship early due to the lock in sidequest, update on that is, even tho my ship got rejected, i got an extra day to fix the issues and reship.

Attachment
Attachment
Attachment
0
Hash

Shipped this project!

Hours: 18.17
Cookies: 🍪 396
Multiplier: 21.8 cookies/hr

I started building an app that will help users build their english vocabulary, this is just the first very basic version of it, I am planning on keeping track of users knowledge to create personalized MCQs quizzes later. This ship was done in a little hurry because of lock in side quest, i couldnt find time to code for the whole weak, but i will give a lot more time to this project in future.

Hash

This looks so incomplete, but i need to ship for the lock in side quest, i hope it doesnt get rejected, i am short on time. anyways, lets see what happens.

Attachment
0
Hash

This log is more of a rant than update, i wasted so much time on this, so i had this line of code commented, and when youre suppose to uncomment it, you must comment another line for it to work, so when uncommented that line, i forgot to comment the line i was suppose to comment. (i have used the word comment a lot, i hope its still making sense)

This caused this very long session of debugging, anyways, a little progress has been made on the quiz page, and how it will be done, but i want to submit this project for the lock in side quest, so i might ship it without that feature and then work on it later

Its not allowed to attach picture of code and i must attach a picture, so here is a picture of endpoint i created(and spend a lot of time to actually use it)

Attachment
0
Hash

back after a long break, gotta do those 10 hours for lock in sidequest
Anyways
Worked On:

  • Populating DB with multiple new paragraphs
  • Added more fields for each word
  • Improved UI a little
Attachment
0
Hash

Worked On:

  • Adding Login/Logout using JWT authentication
  • Fetching words’ meanings from the backend
    ( i am aware of the shitty UI, i will work on when everything else is done)

So now user can select a paragraph they want to read and then hover over any word to fetch its meaning from backend, i have not setup the logic to add the hovered word to user’s weak words yet, thats what i will do very soon, and also setup secure login/logout with JWT authentication.

Attachment
0
Hash

Changes:

  • New Paragraphs Page
  • Sample data of 2 paragraphs with each of their words meaning in DB

Next before moving to UI tweaks, I will be working on making each word of a paragraph a separate DOM element which when hovered, fetches its meaning from DB and shows it to use the user.

Attachment
0
Hash

Changes:

  • Made some cleanup changes to backend.
  • Started working on home page (image is obviously unfinished)

Yap:
So i am really really bad with UI, my experience with UI is almost zero, but somehow i am doing it in react, so this is what i am up to now, to give an idea of how bad i am with UI, let me share my last 3 searches, what property in css stops a text inside container from breaking into lines, border syntax in css and shadow syntax.
So yeah, this is gonna take time, but i think its a simple project and shouldnt take longer.

Attachment
0
Hash

First Log!!
Current Vision:

  • I want to create an english vocabulary builder app, but i wanna make it different/effective by tracking user’s weak words and creating personalized MCQs based on these. So its main idea is user is given a paragraph to read, when user thinks they dont know a word, they can hover over the word to see its meaning, and by doing this they will automatically save it as their weak word, and after a few paragraphs user can create a quiz based on the weak words.

Progress:

  • Initial Backend endpoints and models
  • Backend user auth and login

Next:

  • Gonna move to setup a basic frontend to interact with the app
Attachment
0