Portfolio/front/Tabs/Projects.ts

70 lines
2.7 KiB
TypeScript
Raw Normal View History

import { newLine } from "..";
import ScrollComponent from "../ScrollComponent";
import type { ProjectProps } from "./Project";
import Project from "./Project";
2025-03-12 08:17:34 +01:00
interface ProjectsProps {
width: number;
height: number;
scrollPosition: number;
2025-03-12 08:17:34 +01:00
}
2025-03-18 10:41:31 +01:00
const Projects = async ({ width, height, scrollPosition }: ProjectsProps) => {
const projects: ProjectProps[] = [
{
title: "Algoforge",
description:
`A platform for creating and sharing graphical algorithms.${newLine}` +
`It was made for the algorithm course at IUT de Bayonne et du Pays Basque.${newLine}` +
`It is made entirely in Vanilla JS. No Framework used.${newLine}` +
`This app thrives for simplicity, efficiency and performance. ${newLine}` +
`${newLine}` +
`Built with love over the course of 3 years,${newLine}` +
`Algoforge was originally meant to replace an aging software.${newLine}` +
`It is now used by students and teachers alike.${newLine}`,
technologies: ["js", "Bun", "Docker"],
learnMoreLink: "https://github.com/Bing-Chill-inc/Algoforge-main",
},
{
title: "ssh Portfolio",
description:
`The portfolio you are currently browsing.${newLine}` +
`Built with the Bun javascript runtime.${newLine}` +
`This portfolio works by simulating an ssh server,${newLine}` +
`on which your terminal connects as a pty.${newLine}` +
`Then, the server receives inputs and writes outputs.${newLine}` +
`This is a fun way to showcase my projects.${newLine}`,
technologies: ["ts", "Bun", "ssh2"],
learnMoreLink: "https://forge.feror.fr/feror/Portfolio",
},
2025-03-12 11:59:55 +01:00
{
title: "sh-chat",
description:
`A Discord-like chat app, but in the terminal.${newLine}` +
`This app was made during a c course at IUT de Bayonne et du Pays Basque.${newLine}` +
`It is made entirely in C, using sockets for communication.${newLine}` +
`This app is a simple chat app, with a server and multiple clients.${newLine}` +
`It offers basic functionalities, such as sending messages, chat history,${newLine}` +
`changing nickname, uploading files, and more.${newLine}` +
`Although it really shouldn't be used (at least I wouldn't),${newLine}` +
`it was a fun project to work on.${newLine}`,
technologies: ["c"],
learnMoreLink: "https://github.com/Feror-BotMaker/sh-chat",
},
];
2025-03-18 10:41:31 +01:00
const projectsComponents = await Promise.all(projects.map(async (project) => await Project(project)));
return ScrollComponent({
width,
height,
scrollPosition,
text:
` Use the arrows keys to navigate up and down.${newLine}` +
` You can either ⌘/ctrl click a link to open it, or scan the QR code below it.${newLine}` +
`${newLine}` +
`${projectsComponents.join(newLine)}`,
});
2025-03-12 08:17:34 +01:00
};
export default Projects;