Stammy Profile picture
Mar 21, 2020 24 tweets 13 min read Read on X
i'm so bored i started designing a fake stocks app this morning i might build with Swift to learn.

lot of stock apps optimize for density, assume you care about many stocks & require more tapping for basic info. kinda want the opposite: focus on fewer, bigger, one view Image
spent a bit more time today on this. need to figure out:
- stock card anatomy to fit pre/after hours info
- if i want to use Plaid to let people link their brokerage (+ UI to toggle price, positions etc)
- if i want to let people manually enter trades they've done Image
spending this Saturday morning learning how to use Swift Codable to deal with nested JSON using a dynamic key.. not as easy as I thought it would be 😬

Moved a chunk of the code Swift Playground to help debug.. really nice environment with live view and runtime values Image
I've got a lot of the UI functional with some basic polish. Have stocks saving in Core Data now.. just need to get the hard parts working: fetching/storing/manipulating stock data and charting. and card reordering.. Core Data doesn't make that easy.
Stonks app is alive! 🚨

I have real finance API data working and super basic charts. 😃😍

Excited with this given that I saw my first line of Swift 40 days ago. Would have been faster to make this if Swift types weren’t so annoying.. Image
Some Stonks additions last few weeks 💸

- super dark mode optimized for oled p3 displays
- chart range selection + scrubbing
- better search
- pull to refresh for peace of mind (even w/ auto-polling)
- swipe to delete
- CoreData reordering in Edit view
- some particle emitters
Been building lots of stuff I haven't shared yet (soon!) but now exploring some fun micro-animations to help with new user education. I imagine a set of 3 similar to this after onboarding.

Inspired by @jsngr I thought I'd share some of the (messy) code: gist.github.com/stammy/71363b8…
Mostly wired up now. Using the new iOS 14 PageTabViewStyle() along with GeometryReader + an interpolator to animate scale + opacity on swipe
Got annoyed with Core Data + CloudKit (syncing feels slow and sometimes unpredictable) and began looking into @Firebase.

Now that iOS 14 has SignInWithAppleButton() you need far less code to get Sign In With Apple working. Now to migrate all my Core Data code 😬... ImageImageImage
Mostly migrated to Firebase. Bit of extra complexity from flattening my database to keep Firebase simple (didn’t like managing async code for subcollections).

But now it syncs between devices flawlessly and fast.. so I put in LazyVGrid to get iPad layout somewhat usable.#swiftui Image
Took the 3D app icon I made in @vectary and was able to import it into SceneKit and show in my settings page 🤯. #swiftui

The 3D object needs a lot of work though......
Making progress on my subscription page. 😍 Spent all that time getting global pageview progress so I could do stuff like this.

Over a dozen little animations or interpolations happening in this view.

(Prices are placeholder but I have it working with @RevenueCat 🙌) #SwiftUI
The more people I talked to the more I found that folks have very particular ways they like to have their stock/holdings info displayed... so I went a bit crazy with this card customizer.

✨ Very work in progress but lets you mix up display settings ✨

Basically all custom UI
Realizing there's a ton of stuff I haven't shared yet...

📱🎨 Here's how I approached letting users change the app icon

(still work in progress, couldn't quite get a certain 3d effect on swipe as I liked so I disabled it for now. And these app icons are placeholder) #SwiftUI
This (flattening my data structure) was a bad idea. Retried what I couldn't get working in the past with separate collections and got it working well

That's the problem with learning while building the same app.. end up rewriting everything 3 times 😂😭

Been spending time on a better way to store/calculate holdings but took a break from that this weekend to do some header polishing..

- custom scrollview to get content offset
- interpolate distance to use in 3 states
- zstacks + visualeffect blur views

feels much better ✨
Work in progress but also built a custom iOS 14-like menu.

Don't like the way the iOS 14 ones look (and they don't allow much design customization).

Lots of work for this one to get correct sizing/positioning and interactions like scroll-to-dismiss and tap anywhere to dismiss
Eventually need a landing page for this app.. began tinkering a bit tonight.

I'm so here for this glowy, colorful trend.. even if it's a bit obnoxious 🤣 Lots more iterations left.. Image
🆕✨ Teaser landing page designed, built and deployed!

👉 stocketa.com

Was more than happy to (over)use blurs, glows, gradients on this one👨‍🎨

Details: mini stock cards with SVG path anim + dual keyframe anims to create "hovering in place" effect
🆕✨Work in progress: Importing

A feature to add stock purchase / sale transactions from a spreadsheet.

Lots of details in this one from some tiny parallax things to motion-based colors and lots of work for data validation

@StocketaApp now at 20,100 lines of Swift & #SwiftUI
I wanted to put twinkling particle emitter stars in this sheet overlay so I did✨ In case you were wondering why this app isn't out yet 😆
🆕Stock Details Sheet

After living with the app, the horizontal carousel stats in the stock card aren't easy to use.

Wanted a quick way to peek at stats & holdings without feeling like you're going somewhere. #SwiftUI @StocketaApp

Still have issues to fix but I'm liking it✨
I was told you like multi-layer confetti with air resistance and gravity emulation (like iMessage confetti) 🎉 🎊 @StocketaApp
🌙 Late night coding.. part of the onboarding flow I’m redesigning for the 3rd time for @StocketaApp.

Interpolating pitch and roll from CoreMotion to adjust the UnitPoint center of a radial gradient that is masked by my view, which includes some text & little chart animations

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Stammy

Stammy Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Stammy

Nov 1, 2022
Excited to share what I've been up to at @RewindAI

Rewind is a macOS app that fully utilizes the capabilities of Apple Silicon + Ventura to record everything you see, analyze it and make it searchable in real-time.

rewind.ai
Can't find that tweet you know you saw once? Or wish you could go back 15 seconds to recover that long performance review you were writing before your browser crashed?

You can search or rewind time. Once you've found what you're looking for you can even copy text from it.
One of the main reasons I joined Rewind was for all the unique design challenges.

It's a full-screen, native macOS app (where I'm extensively using my Swift/SwiftUI skills 🥰) that has no peer.

There's lots of privacy considerations as well: the app is entirely local.
Read 7 tweets
Aug 11, 2022
if you post product screenshots on your landing page and need transparency, i can't recommend this enough:

- dont use PNG. even optimized it's still hefty
- use 3x-sized JPG, heavily compressed
- use SVG alpha mask (optimized) to hide unneeded bits

⚡️ faster + less bandwidth ImageImageImage
most of the time the alpha mask is pretty tiny, so you can even inline it directly in your css too to save a network request
works with WebP of course too so you can do the same on supported browsers
Read 4 tweets
Apr 5, 2022
feels like everyone the last few days thinks they're an expert in what an edit button for twitter should look like and how it should work

"just make it time-limited"
"show version history"
"facebook does it!"
i don't have the energy or interest to debate this or go into every single scenario but I just wanted to add a bit of detail as to why real tweet editing is a bit more complex than it seems, as someone who spent 9 years designing things at twitter
lets start with the most important aspect - abuse

enabling real tweet editing can introduce a new abuse vector.

a user could tweet something abusive directed at another user. that user gets the abusive notification and sees it. the damage is done.

but the tweet was...
Read 9 tweets
Jul 19, 2021
🧵 Crypto for Beginners, from a beginner:

I've been reading up on #crypto lately, here's some thoughts from a relative beginner to the space.

First off, I read this DeFi book from @coingecko and enjoyed it - very quick read: landing.coingecko.com/how-to-defi/

I've briefly touched crypto in the past. I first heard about and mined some bitcoin in 2011 (even mining on EC2 Tesla gpu clusters for fun) but didn't think much of it and ignored the space for years. Then got back into it, lost lots of money with trades and ignored crypto again
For years I had dozens of crypto-related terms muted on Twitter.

I didn't want to hear another person talking about HODLing, shitcoins or how crypto was doing to kill traditional finance overnight
Read 21 tweets
Apr 12, 2021
Some tips for finding a 💍 💎 with my experience looking at diamonds over the last year+.

1) Only buy online

At first I thought buying in person at a trusted jeweler was the way to go. I even got direct introductions to jewelers and quickly realized you’ll pay a 20%+ premium.
If you hear a jeweler describe pricing based on the “Rapaport Guide”, a glorified Kelly Blue Book for diamonds that in a physical book/binder.. run.

This guide is largely irrelevant these days and jewelers point to it as justification to charge more beyond4cs.com/faq/rapaport-r…
There’s a lot to worry about when considering buying a diamond online. I had all the concerns: what if they swap the stone and blame me, what if it gets stolen at my building, if fedex won’t cover the claim, what if I want to return it and it gets lost in the mail..
Read 25 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(