Skip to content

Commit

Permalink
add portfolio
Browse files Browse the repository at this point in the history
  • Loading branch information
canicjusz committed May 1, 2024
1 parent 6e19d8f commit fea7ef5
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
106 changes: 106 additions & 0 deletions src/pages/Polski/portfolio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
title: Portfolio - Jan Michalak
description: Prezentacja części moich hobbistycznych projektów.
---
<script setup>
import Grid from '../../components/Grid.vue'
</script>
# Prosty framework PHP

[**Repozytorium**](https://github.com/canicjusz/framework)

Zacząłem tworzyć ten projekt, aby zagłębić się w język PHP, lepiej zrozumieć działanie framework'ów oraz poznać wyzwania, z jakimi autorzy takiego oprogramowania muszą się zmagać.

Projekt jest wciąż nieukończony, ale chyba nigdy nie będzie kompletny. Używam go do tworzenia własnych aplikacji w PHP, więc implementuje jedynie tą funkcjonalność, która jest mi potrzebna. Np.
- statyczny i dynamiczny routing,
- narzucanie wzorca MVC,
- obsługa zmiennych środowiskowych,
- obsługa baz danych oraz wzbudowany Query Builder,
- możliwość modyfikowania zawartości `<head>` z poziomu każdego komponentu wizualnego strony.

Cała dokumentacja dostępna jest w repozytorium.

# Szkolne radio (projekt zespołowy)

[**Repozytorium**](https://github.com/mbniol/lesna-radiowezel)

## Problem
Szkolny radiowęzeł jest praktycznie nieużywany, należałoby wykorzystać tę infrastrukturę i przy okazji zaangażować w projekt uczniów.
## Rozwiązanie
Stworzenie aplikacji web'owej, w której uczniowie mogą zgłaszać piosenki, które mają grać w trakcie przerw w następnym dniu. Algorytm ustawia kolejkę w taki sposób, że piosenki z największą liczbą głosów lecą w trakcie przerw obiadowych. Program w pełni zautomatyzowany.

Jedna część aplikacji jest dostępna dla uczniów. Mogą dodawać piosenki do listy wpisując link lub głosować na piosenki z listy poprzez wciśnięcie przycisku. Każdy uczeń ma po jednym głosie dziennie.
<!--
Oczywiście istnieje panel admina na hasło, gdzie można blokować piosenki ręcznie (piosenki z przekleństwami są banowane automatycznie). -->

Druga część jest dostępna w sieci lokalnej szkoły. Zawiera stronę, która łączy się z SDK Spotify i puszcza muzykę oraz stronę, która wyświetla stan kolejki i aktualnie grany utwór. Strona ta jest wyświetlana na telewizorze w szkolnym holu, co widać na załączonym zdjęciu.

<!-- Panel admina dla tej części aplikacji pozwala tworzyć szablony zawierające czas rozpoczęcia i zakończenia przerw oraz kalendarz, w którym można zaznaczyć dni wolne (nie są wtedy zliczane głosy, ani nie leci muzyka). -->
![alt text](/portfolio/radiowezel.jpg){.center}
## Czego nowego się nauczyłem
- Pracowanie z API i SDK Spotify
- identyfikacja anonimowych użytkowników
- Aktualizowanie danych na stronie "na żywo" przy użyciu server sent events (SSE)
# Serwis rekrutacyjny

[**Repozytorium**](https://github.com/canicjusz/laborperejo)
## Problem
- marginalizacja osób mówiących w esperanto na serwisach rekrutacyjnych;
- brak scentralizowanego miejsca na wakaty dla esperantystów, co utrudniało znalezienie pracy jak i pracowników;
- zwiększenie atrakcyjności języka i przedstawienie języka jako sprawne narzędzie komercyjne.
## Rozwiązanie
Stworzenie serwisu rekrutacyjnego dla esperantystów zainspirowany funkcjonalnością i wyglądem innych dużych serwisów.

Pozwalał przedsiębiorcom i przede wszystkim organizacjom esperanckim stworzenie profilu firmy i dodawanie ofert pracy. Użytkownicy mogli edytować swoje profile oraz udostępniać swoje CV. Strona była wyposażona w całkiem zaawansowaną przeglądarkę do przeglądania profili użytkowników, firm oraz ofert pracy.

Z powodu zaniku zainteresowania i braku funduszy na dalsze utrzymywanie serwera, po roku zdecydowałem się zamknąć stronę. Mimo to można zobaczyć pełną funkcjonalność strony w prezentacji poniżej:

<iframe class="center" width="560" height="315" src="https://www.youtube.com/embed/m4QBzho7LpU?si=_TvnVllTZQzy6485" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## Czego nowego się nauczyłem
<!-- - Korzystanie z frameworka SvelteKit -->
- tworzenie aplikacji Back-end'owej przy użyciu Node.js (dokładniej Express.js),
- tworzenie systemu rejestracji i logowania przy użyciu ciasteczek,
- implementacja potwierdzania rejestracji i resetowanie hasła poprzez jednorazowy link,
<!-- - cykliczne wysyłanie e-mail'i, -->
- podstaw MySQL,
<!-- - tworzenie zaawansowanej wyszukiwarki, implementowanie paginacji -->
- automatyzowanie procesów przy użyciu programu `cron`.
<!-- - Obsługa błędów z komunikatami dla użytkownika -->

# Biblioteka komponentów UI dla aplikacji mobilnych na system KaiOS

[**Repozytorium**](https://github.com/canicjusz/KaiOS-native-UI)
## Problem
Brak framework agnostic biblioteki UI dla aplikacji mobilnych, która wiernie naśladowałaby wygląd komponentów natywnych.
## Rozwiązanie
Stworzenie niewielkiej biblioteki, która dokładnie odwzorowuje design'owe wytyczne zawarte w oficjalnej dokumentacji. Biblioteka stosuje metodologię nazewnictwa BEM.

Bibliotekę można w bardzo łatwy sposób dostosować do własnych potrzeb zmieniając jedynie zmienne CSS na początku pliku.
## Czego nowego się nauczyłem
- popracowałem nad tworzeniem przejrzystego i czytelnego kodu,
- tworzenie dokumentacji.

# Słownik jako wtyczka
[**Repozytorium**](https://github.com/canicjusz/plena-vortaro)

## Problem
Czytanie tekstu w drugim języku bywa trudne. Przeskakiwanie z tekstu do słownika internetowego i wklejanie nieznanej frazy jest bardzo uciążliwe i czasochłonne, należy to uprościć.
## Rozwiązanie
Stworzenie wtyczki, która po zaznaczeniu słowa wyszukuje definicję poprzez API jednego ze słowników i wyświetla definicję w okienku pod zaznaczonym tekstem.

Grubość obwódki okienka, wielkość oraz kolor tekstu, jak i kolor tła jest w pełni modyfikowalny w celach ułatwienia dostępu dla ludzi z niepełnosprawnościami.

![alt text](https://raw.githubusercontent.com/canicjusz/plena-vortaro/master/showcase.gif) {.center}

## Czego nowego się nauczyłem
- tworzenie wtyczek przeglądarkowych,
- framework'a Svelte.js,
<!-- - korzystanie z ShadowRoot i Selection API, -->
- podstawy języka TypeScript.
# Aplikacje na system KaiOS
- [**Zipper**](https://github.com/canicjusz/Zipper) - Kompresor plików na system KaiOS. Moja najpopularniejsza aplikacja, pomogła prawie 2000 użytkowników
- [**Flashcards**](https://github.com/canicjusz/flashcards) - Fiszki na system KaiOS
- [**10000h**](https://github.com/canicjusz/10000h) - Program do śledzenia własnych postępów na system KaiOS

<Grid :files="[{path: '/portfolio/zipper1.png'}, {path:'/portfolio/zipper2.png'}]" />
Binary file added src/public/portfolio/radiowezel.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/public/portfolio/zipper1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/public/portfolio/zipper2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit fea7ef5

Please sign in to comment.