What Every New GraceSoft Product Gets on Day One
Most software gets its security and privacy features “later”. Later is when there’s time, or when a customer asks, or after something goes wrong.
GraceSoft Footing is how I avoid “later”. It’s the Laravel starter every new GraceSoft product will be built on, and it reached v1.0.0 on 20 October. Here’s what that means for you, in plain language.
Signing in safely
- Passkeys. Sign in with your fingerprint, face or device PIN instead of a password. A passkey counts as strong two-factor authentication on its own, and products can even offer passkey-only sign-up.
- Authenticator apps, with recovery codes you can view, download or regenerate.
- Email sign-in codes, for people who don’t use an authenticator app.
- “Is it really you?” checks. Changing your password, turning off two-factor, removing a passkey or deleting your account asks you to confirm first.
- Rate limits on sign-in, codes and password resets, to slow down anyone trying to guess their way in.
Seeing what’s happening on your account
- Browser sessions. See where you’re signed in and sign out everywhere else in one click.
- An activity log. Sign-ins, failed sign-ins, security changes, team changes and billing changes, each with a shortened IP address. It’s kept for 90 days, then deleted.
- Email alerts. If your email address changes, the old address is told.
Your data, your call
- Export my data. Request a ZIP of your profile, teams, activity and photo, plus anything the product itself stores. It’s built in the background and emailed to you as a link that expires after 24 hours.
- Delete my account. Deletion is scheduled for 14 days later, and any subscriptions are cancelled. Sign in during those 14 days and you can change your mind. After that, your account and files are permanently removed.
- Private files. Profile photos are cropped, converted and stripped of hidden metadata like location, then served only through signed, expiring links.
Feedback that doesn’t identify you
Every product has a “Send feedback” dialog, powered by GraceSoft Capture. It passes along useful context like the product, version and page, but never your name or email. To tell reports from the same person apart, it uses a one-way code that can’t be turned back into who you are. If you’d like a reply, you can choose to leave your email.
It also means I use my own form builder every day, which is the best way I know to keep it honest.
Teams and billing that make sense
Invite people by email, give them owner, admin or member roles, and transfer ownership if you need to. Billing runs through Stripe in Singapore dollars, and only the team owner can change it. Products that don’t need teams simply switch them off.
The parts you’ll never see
- A strict Content Security Policy, plus the usual browser security headers
- No third-party requests on signed-in pages: fonts, icons and brand assets are all hosted with the product
- Public IDs that are random UUIDs, never sequential database numbers someone could count through
- Tests, static analysis and design-system checks on every change, and production only accepts changes that have passed through
main
Starting a product in minutes
Footing includes an installer. One command copies it into a new folder, renames it for the new product, starts a fresh Git history and makes the first commit. That means a new GraceSoft product starts with everything above already working, and I get to spend my time on the part that actually solves your problem.
That’s the whole point of these foundations. Less rebuilding, more helping.