Portfolio/front/Tabs/Projects.ts

64 lines
2.5 KiB
TypeScript

import { newLine } from "..";
import ScrollComponent from "../ScrollComponent";
import type { ProjectProps } from "./Project";
import Project from "./Project";
interface ProjectsProps {
width: number;
height: number;
scrollPosition: number;
}
const Projects = ({ 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",
},
{
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",
},
];
return ScrollComponent({
width,
height,
scrollPosition,
text: ` Use the arrows keys to navigate up and down.${newLine}${newLine}${projects
.map((project) => Project(project))
.join(newLine)}`,
});
};
export default Projects;