69 lines
2.7 KiB
TypeScript
69 lines
2.7 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 = 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",
|
|
},
|
|
{
|
|
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",
|
|
},
|
|
];
|
|
|
|
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)}`,
|
|
});
|
|
};
|
|
export default Projects;
|