What I have been building
Counted from my public GitHub history.
Commits per day
Which days I code
What time I code
Busiest repositories
Commits by language
Read these numbers as a table
Takudzwa Mucherengi
Building mobile apps, backend systems and websites, full-time, chasing something I've wanted to do since I was a kid.
Terms & Conditions
By using takudzwamucherengi.com, you agree to these terms. This site is my personal portfolio. It belongs to me, Takudzwa Mucherengi, referred to below as "I" or "me", and it exists to show my work, my projects and my background as a developer. If you do not agree with these terms, please stop using the site.
What this site does
This site shows written descriptions of projects I have built, along with links to their source code and their read me files on GitHub. It shows a dashboard of statistics counted from my own commit history. It lets you play back recordings of my console programs running, and where a project has a browser-based front end, it lets you open and use a sandboxed copy of it. It provides a contact form you can use to send me a message. It provides a comment box, under each project and at the foot of the home page, where you can leave a star rating and a short written comment. That is the whole of it.
What this site does not do
This site does not sell anything, take payments, or process orders. It has no accounts, no logins and no passwords, and you do not need any of those to leave a comment. It does not knowingly collect personal information beyond what you choose to type into the contact form or into a comment. It is not a product, a service or a commercial offering, and nothing on it is an offer to enter into a contract. It does not provide professional, legal, financial, medical or employment advice of any kind, and nothing written here should be relied on as such.
The project demos
Some projects on this site offer a demo you can open and use. Where the demo is a recording, it is a genuine capture of my own program running, replayed for you to watch. Where the demo is interactive, you are using a sandboxed copy that exists only to be demonstrated. It is not a production system, it holds no real records and it is not connected to any real business, customer, payment or inventory.
Do not enter real personal information, real payment details, real passwords or anything confidential into a demo. Anything you type into one may be logged, reset or discarded without notice, and I make no promise that it is kept private or kept at all. A demo may be slow, incomplete, out of date, offline, or removed entirely at any time.
A demo shows how a project behaves in a controlled setting. It is not a guarantee that the same code behaves the same way anywhere else, and it is not a warranty about the quality, security or fitness of that code for any purpose.
The statistics on this site
The numbers on my projects dashboard are counted automatically from the commit history of repositories I own. They are rebuilt once a day, so they can be up to a day behind, and they can be wrong if that automated job fails. They count commits, which is a rough measure of activity and not a measure of effort, quality or skill. They are published in good faith and without any warranty that they are complete or accurate. They are not audited, and they are not an employment record.
The contact form
If you send me a message, I receive the name, email address and message text you typed. I use it only to read and reply. The form uses Cloudflare Turnstile to check that submissions come from a person rather than an automated script. Messages sent through this form are not confidential and are not protected by any professional privilege, so please do not send sensitive information through it. I do not promise to reply, and I do not promise to reply within any particular time.
Comments and ratings
Under each project, and at the foot of my home page, there is a box where you can leave a star rating out of five and a short written comment. You do not need an account and I do not ask for your name or your email. A comment is published immediately and is visible to everybody who visits that page. The same Cloudflare Turnstile bot check my contact form uses also runs here.
Treat a comment as public and permanent. Do not put your own or anybody else's personal information into one, and do not put anything in one you would not want a stranger to read. Because no name is attached to a comment, I cannot tell yours apart from anyone else's unless you tell me which one it is.
By leaving a comment you confirm that the words are yours to post, that they are not unlawful, abusive, threatening, hateful, obscene, deceptive or an infringement of anybody else's rights, and that you are not using the box to advertise, to post links for reach, or to submit the same thing repeatedly. You give me permission to display, keep and remove what you wrote on this site.
I moderate this box myself and at my own discretion. I may edit, hide or delete any comment, or remove the box entirely, at any time and without notice or explanation. I may block access to anyone who misuses it.
Comments and ratings are the opinions of whoever left them. They are not mine, I do not verify them, I do not check that the person leaving one has ever used the project they are rating, and I am not responsible for what anybody else writes. An average rating is simply the arithmetic mean of the ratings received. It is not a survey, not a review score, not audited, and it is not evidence of anything about the quality of my work.
Intellectual property
The design, written content and source code of this site are mine unless stated otherwise. You are welcome to read the site, link to it and quote small parts of it with attribution. You may not copy it wholesale, present it as your own work, or reuse my code without my permission.
The technology logos shown on this site are trademarks of the organisations that own them. I show them to indicate which tools I use. Their appearance here is not a claim of ownership, an affiliation, a partnership or an endorsement in either direction. Where a project of mine began from a starter, a template or another person's work, I say so in that project's own description on the home page, and the original author keeps whatever rights they hold in their part of it.
Links to other sites
This site links to GitHub and to other external sites. I do not control them, I am not responsible for their content, their availability or their handling of your data, and a link is not an endorsement. Once you follow a link away from here, these terms stop applying and that site's own terms take over.
Acceptable use
Please use this site lawfully and in good faith. Do not attempt to break into it, overload it, scrape it at a rate that degrades it for others, probe it for vulnerabilities without my permission, or use any demo to attack the site, its hosting or anyone else. Do not use the contact form or the comment box to send unlawful, threatening or abusive content, to post bulk unsolicited messages, or to work around the bot check that guards either of them. I may block access to anyone who does any of this.
No warranty
This site is provided as it is, with no warranty of any kind. I do not promise it will be available, uninterrupted, error free or secure. I do not promise that its content is accurate, current or complete, and I may change or remove anything on it at any time without notice. I build this site in my own time and I maintain it at my own discretion.
Limitation of liability
To the fullest extent the law allows, I am not liable for any loss or damage arising from your use of this site. That includes loss of data, loss of profit, loss of opportunity, business interruption, or any indirect or consequential loss. It includes anything that happens because the site was unavailable, because information on it was wrong or out of date, because a demo behaved unexpectedly, because a comment was published, edited or removed, or because you relied on something you read here, including something another visitor wrote in a comment.
If you download, copy or run any code linked from this site, you do so at your own risk. It is shared as an example of my work, not as production software, and I accept no liability for what it does on your machine or in your systems.
Nothing in these terms limits any liability that cannot lawfully be limited, including liability for death or personal injury caused by negligence, or for fraud.
Availability and changes
This is a personal site hosted on a third party platform. It may go offline for maintenance, because of a problem at my hosting provider, or because I take it down. Features described here, including any demo, may be added, changed or removed at any time. I do not guarantee that anything you see today will still be here tomorrow.
Governing law
Placeholder pending my own confirmation. I intend these terms to be governed by the law of the jurisdiction I live in, but I have not finalised that wording and I am not stating it here until I have.
Changes to these terms
I may update these terms at any time. The version on this page is the one that applies, and the date at the top of the page tells you when it last changed. Continuing to use the site after a change means you accept the updated terms.
Contact
If you have a question about these terms, email me at contact@takudzwamucherengi.com.
Privacy Policy
This is the privacy policy for takudzwamucherengi.com, my personal portfolio site. I am Takudzwa Mucherengi, referred to below as "I" or "me". This policy describes exactly what happens to information when you visit, written from what the site's code actually does rather than from what a policy usually says.
What I collect
If you just read this site, I collect nothing from you. My code sets no cookies, stores nothing in your browser, and runs no tracking or advertising script. There are no accounts, no logins and no passwords anywhere on this site. That stays true right up until you choose to use the contact form or leave a comment, and both of those are covered below.
There are two places you can hand me something directly. The first is the contact form. That is your name, your email address and your message. I use it to read your message and reply to it. I do not add you to a mailing list and I do not pass it to anyone else.
The second is the comment box that sits under each of my projects and at the foot of my home page. If you leave one, I store exactly four things: the star rating you picked, the words you typed, which page you left it on, and the date. That is the whole record. I do not ask for your name or your email, and I set nothing in your browser. No IP address is written to that record, and the table it goes into has no column to put one in.
Posting a comment runs the same Cloudflare bot check my contact form uses, and that check needs your IP address. My own code reads it and passes it straight to Cloudflare for that one purpose. It is never written down and I never keep it. My host also keeps ordinary server request logs, which include IP addresses, the same as every website.
So a comment carries no name and nothing identifying in what I store, but I will not claim more than that. It cannot be traced back to you from anything on the page or in my database. It could still identify you if you put identifying details in the words you write, and my host's request logs exist independently of me. Treat a comment as public and permanent: it appears on the page for everybody, so do not put anything in one you would not want a stranger to read.
Like every website, mine sits behind a server that records requests. My host keeps standard request logs, which include IP addresses, for security and abuse prevention. I do not use those logs to build a profile of you and I do not try to identify individual visitors from them.
Third parties your browser contacts
Some pieces of this page are served by other companies rather than by me. Whenever your browser fetches something from another company's server, that request necessarily tells them your IP address and which browser you are using. That is how the web works, not a choice those companies make, and it happens before I have any say in it. Here is every one of them on this site.
Cloudflare. Cloudflare hosts this site, and one further piece loads from its servers: the bot check at challenges.cloudflare.com, which guards both my contact form and my comment box. Cloudflare states that its Turnstile bot check processes your IP address, your TLS fingerprint, your User-Agent header and my site key, and that it cannot directly identify individuals from those signals. I keep it because a bot check that runs on my own server is not a bot check, and without one both of those boxes would fill with spam.
There used to be two more. My typefaces loaded from Google's servers at fonts.googleapis.com and fonts.gstatic.com, and the animation library behind the scrolling effects loaded from cdnjs.cloudflare.com. Both of those told another company your IP address and your browser before you had done anything but open the page. I now serve the fonts and that library from my own domain, so neither request happens at all and Google is no longer involved in this site in any way.
Cloudflare Web Analytics. I use this to see how many people visit, which pages they read, and where they arrived from. The measuring script loads from static.cloudflareinsights.com and sends what it counts to cloudflareinsights.com. Cloudflare states that it does not use cookies, local storage or any other client-side state for this, and that it does not fingerprint you by IP address, User-Agent or anything else. I see totals: page counts, referring sites, countries, browsers and how fast pages loaded. I cannot see you.
I am comfortable with this where I was not comfortable with Google Fonts, and the difference is worth stating plainly. Cloudflare already hosts this site, so every request you make to it passes through them regardless. The analytics script tells them nothing about you they could not already see. Google, by contrast, had no other reason to ever know you had visited my site, and the font request handed them your address anyway. If you would rather not be counted, a content blocking extension stops this script and nothing on the site breaks.
This site also links out to GitHub and LinkedIn. Those are ordinary links. Nothing loads from them unless you click, and once you do, that site's own policy applies instead of mine.
What happens to a contact form message
When you press send, your name, email and message go to a small function running on Cloudflare. That function first asks Cloudflare to confirm the bot check you completed, then hands your message to Amazon Simple Email Service, in Amazon's US East Ohio region, which delivers it to my inbox. So your message passes through Cloudflare and Amazon on its way to me, and both of those companies handle it under their own terms.
Email is not a confidential channel and I cannot make it one. Please do not send me anything sensitive through this form.
What happens to a comment
When you post a comment, the star rating and the words you typed go to a small function running on Cloudflare, alongside the token from the bot check. That function asks Cloudflare to confirm the check, rejects the comment if it fails, and otherwise writes four values into a Cloudflare D1 database: the rating, the text, which page it belongs to, and the date and time. Nothing else is written. The function does read your IP address, because Cloudflare's bot check needs it and my code passes it straight through, but it never writes it down and the table it writes into has no column to put one in.
That database is Cloudflare's, it sits inside my own Cloudflare account, and it is used for nothing except holding the comments this site displays. Reading a page fetches the comments for that page and nothing more.
Cookies
I set no cookies. My code does not use cookies, local storage, session storage or any other browser storage, and you can confirm that by reading the source.
Cloudflare may set its own cookies at the network level, because that is part of how it protects the site. The two you are most likely to see are __cf_bm, which Cloudflare uses for bot management and which expires after thirty minutes of inactivity, and cf_clearance, which records that you passed a challenge. These are Cloudflare's, set for security rather than for tracking or advertising, and I do not read them.
Analytics
I use Cloudflare Web Analytics, described in full above. It is cookieless, it does not fingerprint, and it reports totals rather than individuals. Alongside it I may see aggregate traffic figures from my hosting dashboard, such as how many requests a page received and roughly where in the world they came from, counted at the network level. That is the whole of my analytics. I run no advertising pixels, no cross-site tracking, and nothing that follows you anywhere else.
How long anything is kept
Contact form messages sit in my email inbox. I keep them while a conversation is useful and delete them when it is not. Comments stay in the database described above until I remove them, which I will do on request, though with no name attached to a comment you would need to tell me which one is yours. I also remove any comment that is abusive or off topic. Server request logs are kept by my host under their own retention schedule rather than mine. The comments database is the only store of anything this site holds, and it holds comments rather than people. I hold no database of visitors, because there is nothing in this site that would fill one.
What I never do
I do not sell your information. I do not share it for advertising. I do not build profiles of visitors, and I do not track you across other websites. There is no advertising on this site and no arrangement with any advertiser.
Your choices
You can read this entire site without giving me anything, simply by not using the contact form and not leaving a comment. Both are entirely optional and nothing on the site is held back from you for skipping them. If you have sent me a message and want it deleted, email me and I will delete it. If you have left a comment and want it removed, email me and tell me which one it is, and I will remove it. Reading this site contacts two of Cloudflare's servers and nobody else: the analytics script, and the bot check, which only loads when you actually use the contact form or the comment box. A content blocking extension stops both. Nothing on this site breaks without the analytics, and everything except those two boxes still works without the bot check.
Children's privacy
This site is not aimed at children and I do not knowingly collect information from anyone under thirteen. If you believe a child has sent me something through the contact form, or left a comment, email me and I will delete it.
Changes to this policy
If I change what this site collects, I will change this page to match, and update the date at the top of it. This page is the current version.
Contact
For anything to do with privacy, email me at contact@takudzwamucherengi.com.