!░░│¡░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒╠
!░!)φ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠╠░░▒╠
]░░╟╣▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓██▒]░▒╠
]░░╟╣▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣▓▓▓▓▓▓▓█▒]▒▒╡
]░░╟╣▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣╣╣▓▓▓▓▓▓▓▓▓▒▐▒▒╡
]░░╟╣▓╬╬╬╬╬╬╬╬╬╬╬╬╬╣╣▓▓▓▓▓▓▓▓▓▓█▒▐▒▒╡
]░░╟╣▓╣╬╬╬╬╬╣╬╣╣╣╣╣▓▓▓▓▓▓▓▓▓▓▓██▒▐▒╠╡
[░░╟╣▓▓▓╣╣╣╣╣▓╣▓▓▓▓▓▓▓▓▓▓▓▓▓▓███▒▐▒╠╡
[░░╟╣▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████▒▐▒╠╡
]░░╟╣█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█████▒▐▒╠╡
[░░╟╣█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████⌐▐╠╠╡
[░░╚╙└└└└└└└╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙ ▐╠╠╡
[░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠▒▒╡
[░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒░▒▒▒▒▒▒▒╡
[░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒╠╡
Γ░░ΓΓΓΓ░╚╚╚░╚╚╚╚╚╚▀▀▀▀▀▀▀▀▀▀▀▀▀▀╬╠╠╠Γ
[░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒╠╠╡
φ░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒╠╠╠╠╡
▐░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒╠╠╠Γ
]╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬⌐
_____]╚╠╣╣╣╣╣▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⌐____
_ⁿƒⁿ╙]M░ƒ∩░%∩░╔∩░╔∩⌐≤░░╦ƒ░MƒƒM5²MδƒMΘφM░j∩>⌐%^^(φƒ╕░ƒ╕░ƒp░░Q░
.7DDφ≥▒5≥▒φ≥▒δUΓφ7Γê≤Üê5Üφ5Üδ≤Üê5▒φ╠▒φ╠⌂Då░5╠░_▐"S║"S║"▒║""Å░"ⁿⁿ-.,
. ≈╚╚╚╚δ╚╚δδδ╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚╚W╚╚⌐╚╚W╚╚⌐╚╚Ü.-W╚╚╚╚╚ë╚╚ë╚╚Θ░ __`-
=Q░░░░░░░░░░░░░░░░░░░░░░▒▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╝
Chad or Soy
My latest project is now live at chadorsoy.com.
Chad or Soy is a social workout-tracking app built to help you flex on your friend group and promote consistency through social shaming/praising. IOS users get a push notification every day at 5PM with the question: did you work out today? Your answer is displayed in any group you've joined for the other members to either shame or praise.
My main motivation for this app was to learn more about SwiftUI and native IOS development. I started out using CloudKit and Apple's sharing/sync apis, but then some of my friends without IPhones wanted to join the groups. So I made a web version and moved as much of the logic as I could to the lambda functions on AWS. Then I migrated the ios app to use the same backend functions as the web app.






the app on iOS
The web version at chadorsoy.com offers the same features:





Groups
Groups use invite codes and deep links—share chadorsoy://group/ABC123 or chadorsoy.com/invite/ABC123 and recipients can join with one tap.
Serverless Backend
The app runs on native iOS (Swift/SwiftUI) and Next.js, backed by a shared AWS serverless stack. Both clients talk to API Gateway, which routes through a Lambda Authorizer for auth and a single Lambda handler for the API. Data lives in DynamoDB (Groups, GroupMembers, WorkoutEntries, Reactions, Notifications, UserProfiles, etc.); avatars go to S3.
iOS (Swift) Web (Next.js)
│
HTTPS + Bearer
▼
API Gateway
│
▼
Lambda Authorizer → api.ts
│
▼
DynamoDB, S3, SNS