Thursday, December 26, 2024

Wie man einen Twitter-Klon erstellt – React Next JS – Appwrite Crash-Kurs

In diesem Tutorial zeige ich Ihnen, wie Sie einen Twitter-Klon mit Upright erstellen können. Wir beginnen damit, ein neues Projekt in Upright zu erstellen, und dann erstellen wir eine Datenbank und eine Sammlung, um unsere Tweets zu speichern. Wir erstellen auch einige Funktionen, um Tweets zu liken, zu retweeten und zu löschen. Schließlich erstellen wir eine React-App, um unsere Tweets anzuzeigen und es Benutzern zu ermöglichen, mit ihnen zu interagieren.

Loslegen

Um loszulegen, müssen Sie ein neues Projekt in Upright erstellen. Sie können dies tun, indem Sie zur Upright-Website gehen und auf die Schaltfläche “Projekt erstellen” klicken.

Sobald Sie ein Projekt erstellt haben, müssen Sie das Upright CLI installieren. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

“`

npm install -g upright-cli

“`

Erstellen einer Datenbank und Sammlung

Als nächstes müssen wir eine Datenbank und eine Sammlung erstellen, um unsere Tweets zu speichern. Wir können dies tun, indem wir den folgenden Befehl ausführen:

“`

upright db create

“`

Dies erstellt eine neue Datenbank namens `tweets`. Wir können dann eine neue Sammlung innerhalb dieser Datenbank erstellen, indem wir den folgenden Befehl ausführen:

“`

upright collection create tweets

“`

Erstellen von Funktionen

Jetzt, da wir eine Datenbank und eine Sammlung haben, können wir damit beginnen, Funktionen zum Liken, Retweeten und Löschen von Tweets zu erstellen. Wir können dies tun, indem wir den folgenden Befehl ausführen:

“`

upright function create like-tweet

“`

Dies erstellt eine neue Funktion namens `like-tweet`. Wir können dann die Datei `like-tweet.js` in unserem Editor öffnen und den folgenden Code hinzufügen:

“`

const sdk = require(‘@upright/sdk’);

exports.handler = async (event) => {

const { tweetId, likes } = JSON.parse(event.body);

const tweet = await sdk.database.getDocument(

‘tweets’,

tweetId

);

if (tweet) {

const updatedTweet = {

…tweet,

likes: tweet.likes + 1,

};

await sdk.database.updateDocument(

‘tweets’,

tweetId,

updatedTweet

);

return {

data: {

tweet: updatedTweet,

},

};

}

return {

error: {

message: ‘Tweet not found’,

},

};

};

“`

Diese Funktion wird zunächst den Event-Body parsen, der die Tweet-ID und die Anzahl der Likes enthält. Anschließend wird der Tweet aus der Datenbank mithilfe der Methode `sdk.database.getDocument()` abgerufen. Wenn der Tweet gefunden wird, wird die Anzahl der Likes um 1 erhöht und der Tweet mithilfe der Methode `sdk.database.updateDocument()` zurück in die Datenbank gespeichert. Schließlich wird eine Erfolgsantwort mit dem aktualisierten Tweet zurückgegeben.

Wir können diese Funktion jetzt bereitstellen, indem wir den folgenden Befehl ausführen:

“`

upright function deploy like-tweet

“`

Dies bereitstellt die Funktion in Upright und macht sie für unsere App verfügbar.

Erstellen einer React-App

Jetzt, da wir unsere Datenbank und Funktionen eingerichtet haben, können wir eine React-App erstellen, um unsere Tweets anzuzeigen und es Benutzern zu ermöglichen, mit ihnen zu interagieren. Wir können dies tun, indem wir eine neue React-App mit dem folgenden Befehl erstellen:

“`

npx create-react-app twitter-clone

“`

Sobald wir unsere App erstellt haben, können wir die folgenden Abhängigkeiten installieren:

“`

npm install upright-client

npm install react-headless

npm install react-icons

“`

Wir können dann den Upright-Client in unsere `App.js`-Datei importieren:

“`

import React, { useState, useEffect } from ‘react’;

import ReactDOM from ‘react-dom’;

import UprightClient from ‘upright-client’;

const App = () => {

const [tweets, setTweets] = useState([]);

useEffect(() => {

const client = new UprightClient({

apiKey: process.env.API_KEY,

endpoint: process.env.ENDPOINT,

});

client.getDocuments(‘tweets’).then((tweets) => {

setTweets(tweets);

});

}, []);

return (

{tweets.map((tweet) => (

{tweet.text}

{tweet.likes}

))}

);

};

ReactDOM.render(, document.getElementById(‘root’));

“`