Aplikacja do zarządzania notatkami, która pozwala użytkownikom tworzyć, edytować, usuwać i przeglądać swoje notatki po zalogowaniu. Frontend został zbudowany w React, a backend w Express z bazą danych PostgreSQL. Projekt wspiera logowanie za pomocą emaila i hasła oraz autoryzację przez Google.
Przed rozpoczęciem upewnij się, że masz zainstalowane następujące narzędzia:
- Node.js (wersja 18.x lub nowsza zalecana)
- npm (zazwyczaj instalowany razem z Node.js)
- PostgreSQL (lokalnie lub na serwerze)
- Konto Google Developer (jeśli chcesz używać logowania przez Google)
git clone <adres-repozytorium>
cd <nazwa-folderu>Projekt zakłada dwa główne foldery:
frontend– aplikacja React (port domyślny: 5173),backend– serwer Express (port domyślny: 3000).
Jeśli foldery nie są rozdzielone, załóż, że cały kod jest w jednym katalogu, ale frontend i backend mają oddzielne pliki package.json.
cd backendnpm installWymagane pakiety (automatycznie instalowane przez npm install):
expressbody-parserpg(PostgreSQL client)bcryptpassportpassport-localpassport-google-oauth2express-sessiondotenvcorsexpress-rate-limit
Utwórz plik .env w folderze backend i dodaj następujące zmienne:
PG_USER=<twoja-nazwa-użytkownika-postgres>
PG_HOST=localhost
PG_DATABASE=<nazwa-bazy-danych>
PG_PASSWORD=<twoje-hasło-postgres>
PG_PORT=5432
SESSION_SECRET=<losowy-ciąg-znaków-dla-sesji>
GOOGLE_CLIENT_ID=<twój-google-client-id>
GOOGLE_CLIENT_SECRET=<twój-google-client-secret>
- Zastąp wartości w
<>swoimi danymi. SESSION_SECRETmoże być dowolnym losowym ciągiem, np.mojsekret123.GOOGLE_CLIENT_IDiGOOGLE_CLIENT_SECRETuzyskasz z Google Cloud Console po skonfigurowaniu OAuth 2.0.
- Zainstaluj PostgreSQL i uruchom serwer (np.
pgAdminlub CLI). - Utwórz bazę danych:
CREATE DATABASE opeNotes;
- Połącz się z bazą
opeNotesi wykonaj poniższe zapytania SQL, aby utworzyć tabele:CREATE TABLE users ( id SERIAL PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL ); CREATE TABLE notes ( noteid SERIAL PRIMARY KEY, title VARCHAR(255), content TEXT, userid INTEGER REFERENCES users(id) );
- Tabela
usersprzechowuje dane użytkowników. - Tabela
notesprzechowuje notatki powiązane z użytkownikami przezuserid.
- Tabela
npm startSerwer powinien działać na http://localhost:3000.
cd frontendnpm installWymagane pakiety (automatycznie instalowane przez npm install):
reactreact-domreact-router-domaxios@mui/material@mui/icons-material@fortawesome/react-fontawesome@fortawesome/free-solid-svg-icons@fortawesome/free-brands-svg-icons
npm run devAplikacja powinna działać na http://localhost:5173 (domyślny port dla Vite, jeśli używasz tego narzędzia).
- Uruchom serwer PostgreSQL (jeśli nie działa automatycznie).
- Uruchom backend:
cd backend npm start - W osobnym terminalu uruchom frontend:
cd frontend npm run dev - Otwórz przeglądarkę i przejdź na
http://localhost:5173.
- Rejestracja i logowanie: Użytkownicy mogą się rejestrować i logować za pomocą emaila i hasła lub konta Google.
- Notatki: Po zalogowaniu możesz dodawać, edytować i usuwać notatki w sekcji
/notebook. - Sesje: Aplikacja używa sesji do utrzymania stanu zalogowania.
- Błąd CORS: Upewnij się, że
CLIENT_URLw backendzie (http://localhost:5173) zgadza się z adresem frontendu. - Błąd bazy danych: Sprawdź, czy dane w
.envsą poprawne i czy baza danych jest uruchomiona. - Logowanie Google nie działa: Sprawdź, czy poprawnie skonfigurowałeś
GOOGLE_CLIENT_IDiGOOGLE_CLIENT_SECREToraz czy callback URL (http://localhost:3000/auth/google/notes) jest dodany w Google Cloud Console.
| Kolumna | Typ | Opis |
|---|---|---|
id |
SERIAL | Unikalne ID użytkownika |
email |
VARCHAR(255) | Email użytkownika |
password |
VARCHAR(255) | Hasło (zahashowane) |
| Kolumna | Typ | Opis |
|---|---|---|
noteid |
SERIAL | Unikalne ID notatki |
title |
VARCHAR(255) | Tytuł notatki |
content |
TEXT | Treść notatki |
userid |
INTEGER | ID użytkownika (FK) |
- Jeśli projekt jest w jednym folderze, dostosuj kroki instalacji (np. użyj jednego
npm installw głównym katalogu). - Upewnij się, że porty
3000(backend) i5173(frontend) są wolne.