Zanimljivi GitHub repozitorijumi koje preporučujemo
GitHub već dugo vremena važi za mesto na kojem kao developer treba da imate svoj nalog i povremeno objavljujete kod iz svojih projekata. Iako je GitHub prvenstveno poznat po tome što podržava i promoviše projekte otvorenog koda, on nudi i mogućnost kreiranja privatnih i otvorenih repozitorijuma.
Privatni repozitorijumi vam omogućavaju da svoj kod čuvate skrivenim od javnosti i delite ga samo sa određenim saradnicima ili timovima. Sa druge strane otvoreni GitHub repozitorijumi omogućavaju svima da pregledaju, preuzmu i koriste kod besplatno.
Bez obzira na to da li ste iskusan developer ili tek počinjete da se bavite programiranjem, GitHub vam pruža ogromne mogućnosti za učenje, saradnju i usavršavanje.
Zato ćemo vam u ovom tekstu predstaviti neke zanimljive otvorene GitHub repozitorijume, koji vam mogu pomoći ili dati inspiraciju za neki od vaših sledećih projekata.
AppFlowy
AppFlowy je platforma otvorenog koda namenjena organizaciji zadataka, beležaka, tabela i drugih sadržaja, pri čemu nudi potpunu kontrolu nad privatnošću i podešavanjima. Misija ovog projekta jeste da pruži alternativu komercijalnim alatima, ali uz zadržavanje maksimalne fleksibilnosti i privatnosti.
Glavne karakteristike:
- Privatnost: Sve podatke možete da čuvate na svom serveru, bez brige da će neko drugi imati pristup vašim beleškama.
- Modularni pristup: Sastoji se iz različitih modula koje jednostavno možete uključiti ili isključiti.
- Aktivna zajednica: Ima zajednicu developera širom sveta koji doprinose razvoju novih funkcionalnosti i unapređenju performansi ovog alata.
Primer koda (dodavanje novog modula u AppFlowy-u):
// Zamislite da definišete modul za AppFlowy u Rust-u (appflowy_module.rs)
pub struct CustomFlowyModule {
pub name: String,
}
impl CustomFlowyModule {
pub fn new(name: &str) -> Self {
CustomFlowyModule {
name: name.to_string()
}
}
pub fn init(&self) {
// Logika za inicijalizaciju novog modula
println!("Inicijalizujem modul: {}", self.name);
}
}
Ovaj primer pokazuje kako bi u Rust-u mogla da izgleda definicija i inicijalizacija novog modula koji bi se integrisao u AppFlowy.
Tauri
Tauri omogućava izradu desktop aplikacija korišćenjem HTML-a, CSS-a i JavaScript-a (ili TypeScript-a), ali bez potrebe za korišćenjem Chromium-a. Umesto toga koristi ugrađeni sistemski web renderer, što aplikacije čini manjim i efikasnijim.
Glavne karakteristike:
- Male dimenzije aplikacija: Izvršne datoteke imaju daleko manju veličinu nego kod Electron-a.
- Bezbednost: Stroga kontrola API-jeva smanjuje rizik od zloupotrebe.
- Visoke performanse: Pošto ne pokreće Chromium, opterećenje memorije je značajno niže.
Primer koda (Tauri konfiguracija):
# tauri.conf.json ili Cargo.toml (u zavisnosti od podešavanja)
[tauri]
# Osnovne postavke Tauri aplikacije
identifier = "com.example.mojaaplikacija"
windows = [
{
title = "Moja Tauri aplikacija",
width = 800,
height = 600
}
]
[tauri.security]
csp = "default-src 'self'; script-src 'self'"
Ovo je uprošćeni prikaz Tauri konfiguracije, gde možete da definišete osnovne osobine prozora, bezbednosne politike i ostalo.
Helix
Helix je napredni tekstualni editor inspirisan Vim-om, koji uvodi moderne tehnike obrade teksta i integracije sa alatima kao što je LSP (Language Server Protocol). Namenjen je developerima koji žele brzu i efikasnu navigaciju kroz kod bez velikog opterećenja.
Glavne karakteristike:
- Vim modalni stil: Zadržava poznate komandne modove iz Vim-a, ali dodaje i neke nove funkcionalnosti.
- Integracija sa LSP-om: Omogućava automatsko kompletiranje koda, pregled grešaka i brze skokove na definiciju.
- Prilagodljiva konfiguracija: Sve je zapisano u konfiguracionim datotekama, tako da ga možete lako menjati.
Primer koda (Helix konfiguracija – config.toml
):
[keys.normal]
# Prečica za brzo otvaranje fajla u Helix-u
"O" = "open"
[lsp]
# Podešavanja za jezičke servere
rust_analyzer = { cmd = ["rust-analyzer"] }
tsserver = { cmd = ["typescript-language-server", "--stdio"] }
U ovom primeru smo dodelili novu prečicu za komandu open
i uključujemo LSP za Rust i TypeScript.
Ukoliko želite da se detaljnije upoznate sa Vim editorom, predlažemo da pročitate naš tekst Vim editor – osnove.
Micro
Micro je jednostavan ali moćan terminalski editor, namenjen onima koji ne žele da imaju posla sa komplikovanim Vim ili Emacs komandama. Pruža user-friendly interfejs, podršku za miša i sistem plugin-ova.
Glavne karakteristike:
- Intuitivne prečice: Slično kao u klasičnim GUI editorima.
- Plugin sistem: Lako se mogu dodavati nove funkcije za sintaksno isticanje, Git podršku i slično.
- Podrška za miša: Ne morate da pamtite veliki broj komandi za selekciju teksta.
Primer koda (instalacija Micro plugina preko komandne linije):
# Instalacija plugin-a za Micro editor, npr. plugin-a za Git integraciju
micro -plugin install git
Ovom komandom Micro automatski preuzima i uključuje željeni plugin, nakon čega možete da vršite Git operacije iz samog editora.
Redwood
Redwood je JavaScript/TypeScript framework namenjen izradi end-to-end web aplikacija uz minimalnu konfiguraciju. U sebi spaja React (frontend), GraphQL (API sloj) i Prisma (baze podataka), nudeći na taj način kompletan paket za razvoj modernih aplikacija.
Glavne karakteristike:
- Struktura projekta: Kreira jasnu organizaciju koda, gde frontend i backend dele istu osnovu.
- GraphQL integracija: Jednostavno izrađujete šemu i API, koji se lako koristi u React komponentama.
- Automatizacija: Redwood dolazi sa skaffolding alatima za generisanje koda (npr. modela, ruta i testova).
Primer koda (Redwood „service“ i „SDL“):
// api/src/services/posts.js
export const createPost = async ({ input }) => {
return db.post.create({ data: input })
}
# api/src/graphql/posts.sdl.js
type Post {
id: Int!
title: String!
body: String!
}
type Mutation {
createPost(input: CreatePostInput!): Post!
}
Ovi fajlovi prikazuju kako Redwood upravlja serverskim delom (servis) i definiše GraphQL šemu (SDL).
Blockstack (Stacks)
Blockstack, poznat i kao Stacks, je platforma za izgradnju decentralizovanih aplikacija (dApps) koje kombinuju Web3 koncepte sa blockchain-om i pametnim ugovorima. Korisnicima nudi veću kontrolu nad njihovim podacima i privatnošću.
Glavne karakteristike:
- Web3 prelaz: Omogućava prelazak sa klasičnih web aplikacija na decentralizovani model.
- Pametni ugovori: Koristi Clarity jezik za pisanje sigurne, predvidive logike na blockchain-u.
- Zajednica: Ima sve više tutorijala i gotovih primera kako se mogu napraviti raznovrsne dApps.
Primer koda (Clarity pametni ugovor):
(define-data-var counter int 0)
(define-public (increment)
(begin
(var-set counter (+ (var-get counter) 1))
(ok (var-get counter))
)
)
U ovom kratkom Clarity primeru, imamo jednostavan brojač koji se uvećava pozivom funkcije increment
.
Eleventy (11ty)
Eleventy (11ty) je generator statičkih web sajtova zasnovan na Node.js-u, napravljen da bude brz i fleksibilan. Ne zahteva dodatne slojeve poput React-a ili Vue-a, već vam omogućava da sam izaberete šablonske jezike (npr. Markdown, Liquid, Nunjucks).
Glavne karakteristike:
- Minimalistički pristup: Lako se startuje i ne forsira određeni frontend framework.
- Multi-template podrška: Radi sa više šablonskih jezika, što ga čini univerzalnim za različite potrebe.
- SEO pogodnosti: Statičke stranice se brzo učitavaju, što značajno pomaže rangiranju na search engine-ima.
Primer koda (Eleventy konfiguracioni fajl – .eleventy.js):
module.exports = function(eleventyConfig) {
// Dodaj filter za formatiranje datuma
eleventyConfig.addFilter("formatDate", function(date) {
return new Date(date).toLocaleDateString("sr-RS");
});
// Postavi polazni i izlazni direktorijum
return {
dir: {
input: "src",
output: "dist"
}
};
};
Ovo je jednostavan primer gde se dodaje novi filter za formatiranje datuma i konfiguriše ulazna i izlazna putanja za Eleventy.
Baserow
Baserow je alat otvorenog koda za kolaborativno upravljanje tabelama i bazama podataka, sličan Airtable-u. Međutim, za razliku od komercijalnih rešenja, sa ovim imate alatom slobodu da ga samostalno hostujete i prilagođavate svojim potrebama.
Glavne karakteristike:
- Jednostavno uređivanje tabela: Koristi prijatan web interfejs koji je razumljiv i početnicima.
- Otvoren kôd: Možete da vršite izmene u zavisnosti od potreba vašeg projekta.
- API pristup: Automatski generiše API koji vam omogućava lako povezivanje s drugim aplikacijama.
Primer koda (cURL zahtev ka Baserow REST API-ju):
curl -X GET \
-H "Authorization: Token tvoj_baserow_token" \
https://tvoj-baserow-domen.com/api/database/rows/table/123/
Ova komanda vraća sve redove iz tabele ID 123, koristeći vaš lični Baserow token za autorizaciju.
NodeGUI
NodeGUI je biblioteka za kreiranje nativnih desktop aplikacija pomoću JavaScript/TypeScript-a i Qt-a. Za razliku od Electron-a, gde se sve renderuje kroz Chromium, NodeGUI pruža prave, sistemski prepoznatljive komponente.
Glavne karakteristike:
- Nativni izgled: Aplikacije se uklapaju u izgled operativnog sistema.
- Manja potrošnja resursa: Ne koristi Chromium, pa je zato lakši i brži.
- Jednostavno za JavaScript/TypeScript korisnike: Radi na Node.js-u, pa je za poznavaoce web tehnologija relativno lak prelazak na NodeGUI.
Primer koda (osnovna NodeGUI aplikacija):
const { QMainWindow, QWidget, QLabel, FlexLayout, QApplication } = require('@nodegui/nodegui');
const app = new QApplication();
const win = new QMainWindow();
win.setWindowTitle("NodeGUI Demo");
const centralWidget = new QWidget();
const layout = new FlexLayout();
centralWidget.setLayout(layout);
const label = new QLabel();
label.setText("Zdravo iz NodeGUI-ja!");
layout.addWidget(label);
win.setCentralWidget(centralWidget);
win.show();
global.win = win; // Čuvamo referencu da GC ne ukloni prozor
app.exec();
Ovim kodom kreiramo prozor i jednostavnu etiketu („label“) u NodeGUI okruženju.
Wails
Wails je alat za izradu desktop aplikacija, ali naglasak stavlja na Go (Golang) jezik za serversku/logičku stranu, dok se za korisnički interfejs koriste HTML, CSS i JavaScript. Na taj način spaja prednosti Go-a i fleksibilnost web tehnologija.
Glavne karakteristike:
- Brza izrada binarnog fajla: Go generiše samostalni izvršni fajl koji se lako distribuira.
- Integracija sa React, Vue ili Svelte: Možete izabrati omiljeni frontend framework.
- Jednostavan API sloj: Komunikacija između Go koda i web dela aplikacije se odvija kroz Wails API.
Primer koda (osnovni Wails projekat – main.go):
package main
import (
"github.com/wailsapp/wails"
"log"
)
func basic() string {
return "Zdravo iz Go-a!"
}
func main() {
app := wails.CreateApp(&wails.AppConfig{
Width: 800,
Height: 600,
Title: "Moja Wails Aplikacija",
})
// Registrujemo funkciju koja će biti dostupna u JavaScript-u
app.Bind(basic)
err := app.Run()
if err != nil {
log.Fatal(err)
}
}
Frontend deo može biti običan HTML/JS fajl u kome pozivate basic()
funkciju iz Go-a putem Wails API-ja.
Lamp
LAMP (Linux, Apache, MySQL, PHP) je dobro poznati skup softvera za pokretanje web servera. Na GitHub-u se nalaze brojni projekti i skripte koji pomažu da se LAMP brzo i lako podigne, bilo na lokalnoj mašini ili na udaljenom serveru.
Glavne karakteristike:
- Stabilna osnova: Većina klasičnih PHP aplikacija (poput WordPress-a) radi na LAMP stack-u.
- Velika zajednica: Nećete imati problem sa pronalaženjem pomoći, jer je LAMP tu već decenijama.
- Docker/VirtualBox slike: Mnogi GitHub repozitorijumi sadrže već podešene slike i skripte za brzu instalaciju.
Primer koda (Docker Compose za LAMP okruženje – docker-compose.yml
):
version: '3.3'
services:
web:
image: apache:latest
volumes:
- ./www:/var/www/html
- ./config:/etc/apache2/sites-available
ports:
- "80:80"
- "443:443"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- "3306:3306"
Ovaj docker-compose.yml
fajl vam omogućava da jednim potezom podignete Apache i MySQL i da u folderu www držite svoj PHP projekat, dok u folderu config možete kreirati vaš virtualni host, kao što smo pisali ranije u tekstu Kako napraviti Apache virtualni host.
Zaključak
Zaključak
Kao što znate, GitHub je nezaobilazna platforma za svakog developera. Bilo da radite na otvorenom kodu ili samo želite da sačuvate svoje projekte privatno, GitHub nudi veki broj opcija koje vam mogu pomoći u učenju, unapređenju veština i inspiraciji za nove projekte.
Posebna vrednost GitHub-a leži upravo u velikom broju alata koji vam mogu olakšati rad.
Iz tog razloga se nadamo se da vam je ovaj pregled korisnih GitHub projekata dao nove ideje i podstakao vas da dodatno istražite mogućnosti koje ova platforma pruža.