- Opis działania
- Wykorzystane technologie
- Architektura bazy danych
- Dokumentacja API
- Fragment kodu
- Uruchamianie serwera
- Obsługa Heroku
Aplikacja frontendowa komunikuje się z serwerem za pomocą REST API wysyłając do niego zapytania, które są przez niego przetwarzane. Wysyła on następnie odpowiednie zapytanie do bazy danych, otrzymując odpowiedź, która po przetworzeniu jest przesyłana do aplikacji frontendowej w postaci obiektu JSON.
Kod serwera napisany został w języku TypeScript.
W tworzeniu aplikacji pomogło użycie gotowych paczek:
-
Users
Odpowiada za konta użytkowników aplikacji -
Notes
Odpowiada za dane notatek dostępnych w aplikacji -
Orders
Odpowiada za transakcje związane z notatkami -
App_reports
Odpowiada za zgłoszenia dotyczące błędów aplikacji -
Note_reports
Odpowiada za zgłoszenia nieodpowiednich treści notatek -
Comments
Odpowiada za komentarze notatek -
Files
Odpowiada za pliki przesyłane przez użytkowników
export const buyNote = async (
userId: String,
noteId: string,
price: number,
database: Db
) => {
await database.collection("orders").insertOne({
userId: userId,
noteId: noteId,
date: Date.now(),
price: price,
});
let note = await database.collection("notes").findOne({_id: new ObjectId(noteId)}, {projection: {authorId: 1, title: 1}});
if(note!=null){
let authorToken = await getPushTokenOfUser(note.authorId, database);
await fetch('https://exp.host/--/api/v2/push/send', {
method: 'POST',
headers: {
'host': "exp.host",
'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-type': 'application/json'
},
body: JSON.stringify({
"to": authorToken,
"title": "Ktoś kupił Twoją notatkę!",
"body": "Notatka " + note.title + " została kupiona."
})
}).then((response) => {
console.log(response.status);
console.log(response.text);
}).catch((error) => console.log(error));
}
};
Przedstawiony fragment kodu odpowiada za realizację kupna notatki przez użytkownika, oraz wysłanie powiadomienia o kupnie do autora notatki.
Aby uruchomić server używamy komendy:
yarn start
Aby skompilować TypeScript na JavaScript:
yarn tsc -p tsconfig.json
Budujemy aplikacje:
yarn tsc -p tsconfig.json
Dodajemy wszystkie pliki do repo:
git add .
git commit -m "message"
Pushujemy zmiany na heroku:
git push heroku main
Do sprawdzenia używamy komendy:
heroku logs --tail