Week 4 of my GSoC journey started with a fresh set of tasks—one of which was fixing the authorization flow.
It All Started with OAuth… and a Missed README
So the week started with a new task: fix the OAuth authorization.
Seems straightforward, right?
Well, I might have missed reading the README properly. Turns out, it clearly mentioned:
“For Google OAuth we use google_sign_in
. You'll need:
-
cv_debug.jks
inandroid/app/
-
key.debug.properties
inandroid/
For these secrets, just message us on Slack. We'll take care of the rest.”
And guess who didn’t read that? 🙃
I messaged Aboo (our org admin), only to learn the files were on his old laptop. So I hopped on texts with Hardik, and we decided: okay, let’s set it up from scratch — new OAuth credentials, new keys, new everything.
We also geeked out a bit on why OAuth fails sometimes. Quick tip: OAuth credentials can expire if they’re rotated or due to change in Google's policies. So if you’re facing weird auth issues — always check your keys first.
Welcome to the World of RTL Languages
Just when I thought I was done with multi-language support, Aboo said:
“We also need to support RTL languages — like Arabic and Hebrew.”
I’m going to be honest here — I barely manage English and Hindi. Arabic? Never seen, never typed.
So I started by detecting if the selected locale was RTL, and wrapped my widgets using Directionality
. At first, I was manually adjusting everything. It felt huge, and the UI started looking weird to me.
But here’s the cool part — turns out Flutter handles RTL automatically if your localization setup is right. That discovery? Literal joy.
I used DeepSeek to auto-translate for testing (yes, AI is now my bestie), and then came Manar — who joined the RTL-support Slack group and saved my life. She pointed out mistakes that I couldn’t even spot because… I literally couldn’t read the script 😅
I was like:
“Oh this looks like that word… maybe?”
She explained things patiently and I learned a lot — not just about the languages, but about designing with empathy for users you don’t share a language with.
Pull request: https://github.com/CircuitVerse/mobile-app/pull/391
A good video that you can see(recommended by Aboo): https://www.youtube.com/watch?v=sNbNId_MGtc
Also added language-specific screenshots — earlier the UI changed, but the screenshots stubbornly stayed in English. Fixed ✅
Markdown Mayhem: My Widget Had a Meltdown
Now let’s talk about the Interactive Book section.
It broke. Hard.
EXCEPTION CAUGHT BY WIDGETS LIBRARY:
Failed assertion: line 267 pos 12: '_inlines.isEmpty': is not true.
Caused by:
- Malformed markdown content
- Null or improperly formatted data
To address this, I started writing a function to sanitize Markdown input:
String _sanitizeMarkdown(String content) {
debugPrint('Sanitizing markdown content...');
final originalLength = content.length;
content = content.replaceAll(RegExp(r'[\x00-\x09\x0B-\x1F]'), '');
content = content.replaceAll(RegExp(r'\r\n?'), '\n');
content = content
.replaceAllMapped(RegExp(r'(?<!\*)\*\*([^\*]+)(?!\*\*)'), (m) => '**${m[1]}**')
.replaceAllMapped(RegExp(r'(?<!_)__([^_]+)(?!__)'), (m) => '__${m[1]}__')
.replaceAllMapped(RegExp(r'(?<!`)`([^`]+)(?!`)'), (m) => '`${m[1]}`');
if (content.length != originalLength) {
debugPrint('Sanitization changed content length from $originalLength to ${content.length}');
}
return content;
}
It’s not perfect yet, but it’s helping. Slowly taming the Markdown monster 🐉
Pubspec.yaml Curiosity
I also peeked into pubspec.yaml and noticed:
http: any
markdown: any
webview_flutter: any
dependency_overrides:
mime: ^1.0.1
plugin_platform_interface: ^2.1.2
markdown:
git: https://github.com/dart-lang/markdown.git
Using any
and overriding dependencies
isn't best practice—could be contributing to instability. Tried a few changes, but didn’t get far (yet).
“Hey… How Often Do You Talk to Your Mentors?”
Now for the jump scare of the week.
I got a message from Aboo:
“Hey, how often do you discuss the project with your mentors? Do you keep meeting notes?”
And in my head:
“Gyi naukri.”
But later Hardik clarified it was for internal process. Crisis averted.
Beyond GSoC
Startup Update: Our startup got screened for a ₹10 lakh ignition grant!
GSSoC Campus Ambassador: I don’t know why I got selected, but hey—I did.
Rust: I learnt a bit of rust and tried contributing to the main repo (to the documentation, don't laugh).
Big thing brewing: Can’t share yet, but something big is on the horizon.
Web3 Hackathon: Teaming up with seniors. Learning tons.
Notion Geekery: Made a cool Notion template and shared it on LinkedIn, here's the link of that template : My Organized Chaos.
That’s it for Week 4—lots of learning, a bit of chaos, and many “Oh no!” moments turned into “Aha!” ones. If you’ve been in the trenches of OAuth or RTL or just want to laugh at my mishaps, let’s connect!
See you next week 🚀
Top comments (0)