NiceTOTP
Full offline (except configuration) TOTP Hardware key, using the nRF52840.
Install / Use
/learn @ICantMakeThings/NiceTOTPREADME
NiceTOTP
Verry niceeee ;>
<img width="200" height="300" alt="ew" src="https://github.com/user-attachments/assets/44ae206d-7d15-4607-9325-636519ae4e47" /> <img width="1312" height="759" alt="dswwe" src="https://github.com/user-attachments/assets/fb533518-381d-400a-bb54-9906aab24fc3" />What is NiceTOTP?
Time-based one-time password (TOTP). aka: 2FA!
A alternetive to Authy / Google Authenticator.
Full offline. And Standalone once all Keys have been added.
Sleep mode after 1 minuite. battery life info at the bottom
press a button or plug it in to charge to wake it
NEW! Import via scanning the QR code on google auth app. all that and more with the python app in the repo.
But Why??
There are a few reasons why I made this device, mainly to lose dependence of my phone. But not just, What if your phone breaks, bricks, or something else? I rather have lots of devices that don't depend on eachother rather than a all in one for that reason, plus most "universal" stuff performs worse than a specific device for that single function. As of right now, I'd say it's almost complete (enough to daily drive), possibly a few more hardware security features, maybe UI polishing, fixing any bugs i haven't found yet and should be perfect. The cost is ~£6 excluding 3D printing.
Hardware is:
- Nice!Nano: AliExpress Link
- DS3231 RTC: AliExpress Link
- 0.96Inch Display: AliExpress Link
- 6*6 Silicone Switch: AliExpress Link
- 3D model
Note: These are referral links. If you purchase through it, I earn a commission at no extra cost to you.

Usage
Use the NiceTOTP-Configurator (Firmware update doesnt work rn*)
or you can use serial commands:
setunixtimeexample:setunixtime 1751925355add <username> <base32secret>example:add test JBSWY3DPEHPK3PXP(Compare)listdel <GetTheIDFromListCommand>example:del 1factoryreset(Power cycle after)
Installation
- Build and flash the project with platformio (Make sure you add nicenano support here)
- Or Drag and drop the .UF2 onto the nicenano drive when doubble clicking reset (short rst pin with usbc sheild tapping twice quickly)
More Info
- In 2 months the RTC drifted 8s forward.
- It still shows the right code tho, but that means the last 8 Seconds are invalid. I will need to see whats up with the RTC
- At month 6 it looked like 50%, battery life seems like a year then.. charging it now so yeah.
- Make sure not to let it discharge as it will go in a soft brick, to unbrick you just press rst (mentioning it if you glued shut the case like i did when i was done with hardware but not firmware.)
- If you want protection over phisical attacks, you want to use something like a st-link and run approtect.py which blocks reading firmware, but there will still be other ways to get keys as a hardware hacker, so just noting!!!
More info on my Site
Related Skills
healthcheck
342.0kHost security hardening and risk-tolerance configuration for OpenClaw deployments
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
prose
342.0kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
frontend-design
84.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
