Welcome to my portfolio website! This is a showcase of my work and projects.
🌐 Live Portfolio: freeutka.xyz
This is my personal portfolio built with modern web technologies. Feel free to explore my projects and get in touch!
- TypeScript
- React
- Tailwind CSS
You can also view my portfolio directly from your terminal. The CLI is a lightweight script that prints a formatted profile card.
The CLI is built using Bun. The cli/generate.ts script handles the formatting by:
- Defining the profile data and styling constants.
- Generating a fixed-width terminal box using ANSI escape codes for colors and links.
- Automatically writing the generated output to
public/cli.txtand building an executable file.
You can run it in two ways:
- Via curl:
curl freeutka.xyz- Via npx:
npx freeutkaIf you are hosting your site on Vercel behind Cloudflare, note that Vercel automatically redirects all HTTP requests to HTTPS. This breaks terminal usage such as:
curl freeutka.xyzTo support HTTP requests while keeping the website on HTTPS, you can use a Cloudflare Worker together with a URL Rewrite Rule.
In Cloudflare:
- SSL/TLS → Edge Certificates
- Disable Always Use HTTPS
Create a new Worker and use:
export default {
async fetch(request) {
const ua = request.headers.get("user-agent") || "";
const url = new URL(request.url);
if (
ua.includes("curl") &&
url.pathname === "/cli.txt"
) {
return fetch("https://freeutka.xyz/cli.txt");
}
return fetch(request);
}
};Go to:
Rules → URL Rewrite Rules
Create a rule with the expression:
(http.request.uri.path eq "/" and http.user_agent contains "curl")
Rewrite to:
Static
/cli.txt
This makes:
curl freeutka.xyzbehave as:
curl freeutka.xyz/cli.txtwithout affecting regular browser traffic.
Attach the Worker to:
freeutka.xyz/*
Now:
curl freeutka.xyzwill work over HTTP, while regular browsers will still be redirected to HTTPS.
Forked from RiskyMH/Website
Feel free to check out the code and reach out if you have any questions! 😊
