Chattin Uygulaması: Gerçek zamanlı mesajlaşma özelliğine sahip, kullanıcıların birbirleriyle iletişim kurmasını sağlayan bir uygulamadır.Javascript (React), CSS, Python (FastAPI) ve PostgreSQL ile geliştirilmiştir.
Bu bölüm, projeyi kendi bilgisayarınızda çalıştırabilmeniz için gerekli adımları içerir.
Projenin çalışması için aşağıdaki yazılımlar ve kütüphaneler gereklidir:
- Node.js (v18 veya üstü)
- Python (v3.7 veya üstü)
- FastAPI
- PostgreSQL
- WebSocket desteği
axios
: HTTP istekleri yapmak için kullanılır.react
: Kullanıcı arayüzü bileşenlerini oluşturmak için ana kütüphanedir.react-dom
: React bileşenlerini DOM'a eklemek için kullanılır.react-router-dom
: Tek sayfa uygulamalarında yönlendirme yapmak için kullanılır.websocket
: WebSocket iletişimi için kullanılır.dotenv
: Çevresel değişkenleri yönetmek için kullanılır.concurrently
: Birden fazla komutu aynı anda çalıştırmak için kullanılır (örneğin, hem frontend hem de backend sunucusunu başlatmak için).eslint
: Kod kalitesini artırmak için statik kod analizi yapar.eslint-plugin-react
: React uygulamaları için özel ESLint kuralları sağlar.prettier
: Kod biçimlendirmesi için kullanılır.
Bu kütüphaneleri frontend
dizininde package.json
dosyası olarak kaydedebilir ve ardından npm install
komutunu çalıştırarak yükleyebilirsiniz.
fastapi
: Web uygulamaları oluşturmak için asenkron bir framework.uvicorn
: FastAPI uygulamalarını çalıştırmak için ASGI sunucusu.sqlalchemy
: SQL veritabanları ile etkileşim kurmak için ORM.pydantic
: Veri doğrulama ve ayarlama için kullanılır.passlib
: Şifreleri güvenli bir şekilde hashlemek için.python-jose
: JWT (JSON Web Tokens) oluşturma ve doğrulama için.python-dotenv
: Çevre değişkenlerini yönetmek için.cors
: Cross-Origin Resource Sharing (CORS) desteği sağlar.
Bu paketler requirements.txt
dosyasında belirtilmiştir.
-
Depoyu Klonlayın:
git clone https://github.com/kullanici_adiniz/chat-app.git
(Kendi GitHub kullanıcı adınızı kullanmayı unutmayın.)
-
Frontend için Gerekli Bağımlılıkları Yükleyin:
cd chat-app/frontend npm install
-
Backend için Gerekli Bağımlılıkları Yükleyin:
cd ../backend pip install -r requirements.txt
-
Veritabanını Ayarlayın: PostgreSQL'de bir veritabanı oluşturun ve gerekli tabloları oluşturmak için gerekli SQL dosyasını çalıştırın.
Aşağıdaki komutla yeni bir veritabanı oluşturun (örneğin, chattin_db
):
```sql
CREATE DATABASE chat_app;
```
Aşağıdaki komutla yeni bir kullanıcı oluşturun (örneğin, chattin
):
```sql
CREATE USER chattin WITH PASSWORD 'your_password';
```
Ardından, oluşturduğunuz kullanıcıya veritabanına erişim izni verin:
```sql
GRANT ALL PRIVILEGES ON DATABASE chat_app TO chattin;
```
Veritabanınıza bağlandıktan sonra, gerekli tabloları oluşturmak için aşağıdaki SQL komutlarını kullanabilirsiniz:
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
sent_messages INTEGER DEFAULT 0,
received_messages INTEGER DEFAULT 0
);
```
```sql
CREATE TABLE messages (
id SERIAL PRIMARY KEY,
sender_id INTEGER REFERENCES users(id),
recipient_id INTEGER REFERENCES users(id),
content TEXT NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
Oluşturduğunuz tabloları kontrol etmek için şu komutu kullanabilirsiniz:
```sql
\dt
```
-
Backend Sunucusunu Başlatın:
cd chat-app/backend uvicorn main:app --reload
-
Frontend Uygulamasını Başlatın:
cd chat-app/frontend npm start
-
Frontend için tarayıcınızda
http://localhost:3000
adresine gidin. Backend içinsehttp://localhost:8000
adresine giderek karşılama mesajını görebilirsiniz. FastAPI'nin sağladığı Swagger arayüzünehttp://localhost:8000/docs
adresinden ulaşabilirsiniz.
Artık uygulamanız çalışıyor olmalı!
Projeyi kullanmaya başlamak için aşağıdaki adımları takip edin:
-
Giriş Yapma:
- Uygulama açıldığında, giriş yapmanız gereken bir sayfa göreceksiniz.
- Kayıtlı kullanıcı adı ve şifrenizi girin ve "Giriş" butonuna tıklayın.
-
Kullanıcı Kaydı:
- Eğer henüz bir hesabınız yoksa, "Kayıt Ol" seçeneğine tıklayarak kullanıcı kaydı oluşturabilirsiniz.
- Kullanıcı adınızı ve şifrenizi girin ve ardından "Kayıt" butonuna tıklayın.
-
Mesaj Gönderme ve Alma:
- Giriş yaptıktan sonra, sol taraftaki kullanıcı listesinden bir kullanıcı seçin.
- Seçtiğiniz kullanıcı ile mesajlaşmak için metin kutusuna mesajınızı yazın ve "Gönder" butonuna basın.
- Mesajlar, seçtiğiniz kullanıcıyla olan sohbet penceresinde görüntülenecektir.
- Şu an çevrimiçi olan kullanıcıları kalın yeşil fontla ve yanında bir dünya ikonu ile görebilirsiniz.
- Daha önce mesajlaştığınız kullanıcılar
Eski Mesajlar
bölümünde, diğer kullanıcılar iseTüm Kullanıcılar
bölümünde görüntülenecektir.
Proje aşağıdaki başlıca özelliklere sahiptir:
- Gerçek zamanlı mesajlaşma
- Kullanıcı kaydı ve giriş işlemleri
- Kullanıcı durumu görüntüleme (online/offline)
- Önceki mesajları görüntüleme
- Kullanıcı dostu arayüz
Projenin dizin yapısı şu şekildedir:
chattin-app/
├── backend/
│ ├── main.py # FastAPI uygulama dosyası
│ ├── models.py # Veritabanı modelleri
│ ├── schemas.py # Veritabanı şemaları
│ ├── routes.py # API yolları
│ └── requirements.txt # Python bağımlılıkları
├── frontend/
│ ├── src/
│ │ ├── App.js # Ana uygulama bileşeni
│ │ ├── Chat.js # Sohbet bileşeni
│ │ ├── index.js # Uygulama giriş noktası
│ │ └── ... # Diğer bileşenler
│ └── package.json # Node.js bağımlılıkları
└── README.md # Proje belgeleri
Projeyi geliştirmek isteyenler için aşağıdaki yönergeleri izleyebilirsiniz:
-
Kod Değişiklikleri:
- Kodda değişiklik yapmak için
backend
vefrontend
dizinlerinde gerekli dosyaları açın ve düzenleyin.
- Kodda değişiklik yapmak için
-
Yeni Özellikler Eklemek:
- İstediğiniz yeni özellikleri eklemek için ilgili dosyaları düzenleyin ve test edin.
-
Test Yazma:
- Yapılan değişiklikleri test etmek için uygun test dosyalarını oluşturun ve çalıştırın.
Projeye katkıda bulunmak için aşağıdaki adımları takip edebilirsiniz:
- Forklayın: Projeyi GitHub'dan forklayın.
- Yeni Bir Branch Oluşturun: Yeni özellikler veya düzeltmeleri kodu etkilemeden yapabilmek için bir dal oluşturun.
git checkout -b yeni-ozellik
- Değişiklikleri Yapın: Gerekli değişiklikleri yapın ve test edin.
- Değişiklikleri Yükleyin: Değişikliklerinizi ana dalınıza geri yükleyin.
git commit -m "Yeni özellik eklendi" git push origin yeni-ozellik
- Pull Request Gönderin: GitHub'da ana depoya bir pull request gönderin.
Bu proje MIT Lisansı altında lisanslanmıştır. MIT Lisansı, yazılımın özgürce kullanılmasına, kopyalanmasına ve dağıtılmasına izin verir. Daha fazla bilgi için Lisans Dosyası dosyasına bakabilirsiniz.
Proje hakkında daha fazla bilgi veya katkıda bulunmak isterseniz, aşağıdaki iletişim bilgilerini kullanabilirsiniz:
- E-posta: [email protected]
- GitHub: isikmuhamm
- Proje Sayfası: Proje URL'si
Chattin Application: A real-time messaging app that allows users to communicate with each other. It was developed using JavaScript (React), CSS, Python (FastAPI), and PostgreSQL.
This section outlines the steps needed to run the project on your local machine.
The following software and libraries are required for the project to work:
- Node.js (v18 or higher)
- Python (v3.7 or higher)
- FastAPI
- PostgreSQL
- WebSocket support
axios
: Used for making HTTP requests.react
: The main library for building user interface components.react-dom
: Used to add React components to the DOM.react-router-dom
: Used for routing in single-page applications.websocket
: Used for WebSocket communication.dotenv
: Used to manage environment variables.concurrently
: Used to run multiple commands simultaneously (e.g., starting both the frontend and backend servers).eslint
: Performs static code analysis to improve code quality.eslint-plugin-react
: Provides specific ESLint rules for React applications.prettier
: Used for code formatting.
You can save these libraries in the package.json
file within the frontend
directory and then run npm install
to install them.
fastapi
: An asynchronous framework for building web applications.uvicorn
: An ASGI server for running FastAPI applications.sqlalchemy
: An ORM for interacting with SQL databases.pydantic
: Used for data validation and settings.passlib
: Used for securely hashing passwords.python-jose
: Used for creating and validating JWT (JSON Web Tokens).python-dotenv
: Used for managing environment variables.cors
: Provides Cross-Origin Resource Sharing (CORS) support.
These packages are listed in the requirements.txt
file.
-
Clone the Repository:
git clone https://github.com/your_username/chat-app.git
(Make sure to use your own GitHub username.)
-
Install Frontend Dependencies:
cd chat-app/frontend npm install
-
Install Backend Dependencies:
cd ../backend pip install -r requirements.txt
-
Set Up the Database: Create a database in PostgreSQL and run the required SQL script to create the necessary tables.
Create a new database (e.g., chattin_db
) with the following command:
```sql
CREATE DATABASE chat_app;
```
Create a new user (e.g., chattin
) with the following command:
```sql
CREATE USER chattin WITH PASSWORD 'your_password';
```
Then grant access to the newly created user:
```sql
GRANT ALL PRIVILEGES ON DATABASE chat_app TO chattin;
```
Once connected to your database, you can create the necessary tables using the following SQL commands:
```sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
sent_messages INTEGER DEFAULT 0,
received_messages INTEGER DEFAULT 0
);
```
```sql
CREATE TABLE messages (
id SERIAL PRIMARY KEY,
sender_id INTEGER REFERENCES users(id),
recipient_id INTEGER REFERENCES users(id),
content TEXT NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
You can verify the created tables with the following command:
```sql
\dt
```
-
Start the Backend Server:
cd chat-app/backend uvicorn main:app --reload
-
Start the Frontend Application:
cd chat-app/frontend npm start
-
For the frontend, navigate to
http://localhost:3000
in your browser. For the backend, you can see the welcome message athttp://localhost:8000
. The Swagger interface provided by FastAPI is available athttp://localhost:8000/docs
.
Your application should now be running!
To start using the project, follow these steps:
-
Log In:
- When the app opens, you'll see a login page.
- Enter your registered username and password, and click the "Log In" button.
-
Sign Up:
- If you don't have an account yet, click the "Sign Up" option to create one.
- Enter your username and password, then click the "Register" button.
-
Send and Receive Messages:
- Once logged in, select a user from the user list on the left.
- To chat with the selected user, type your message in the text box and click the "Send" button.
- Messages will appear in the chat window with the selected user.
- Online users are displayed in bold green font with a globe icon next to their names.
- Users you've previously chatted with will appear under the "Old Messages" section, while other users will be listed under the "All Users" section.
The project includes the following key features:
- Real-time messaging
- User registration and login
- Displaying user status (online/offline)
- Viewing previous messages
- User-friendly interface
The directory structure of the project is as follows:
chattin-app/
├── backend/
│ ├── main.py # FastAPI application file
│ ├── models.py # Database models
│ ├── schemas.py # Database schemas
│ ├── routes.py # API routes
│ └── requirements.txt # Python dependencies
├── frontend/
│ ├── src/
│ │ ├── App.js # Main application component
│ │ ├── Chat.js # Chat component
│ │ ├── index.js # Application entry point
│ │ └── ... # Other components
│ └── package.json # Node.js dependencies
└── README.md # Project documentation
For those who want to develop the project, you can follow these instructions:
-
Code Changes:
- To make code changes, open and edit the necessary files in the
backend
andfrontend
directories.
- To make code changes, open and edit the necessary files in the
-
Adding New Features:
- To add new features, edit the relevant files and test them.
-
Writing Tests:
- Create and run appropriate test files to test any changes made.
To contribute to the project, follow these steps:
- Fork the Project: Fork the project from GitHub.
- Create a New Branch: Create a branch to make your changes without affecting the main code.
git checkout -b new-feature
- Make Changes: Make and test the necessary changes.
- Push Changes: Push your changes back to your branch.
git commit -m "Added new feature" git push origin new-feature
- Submit a Pull Request: Submit a pull request to the main repository on GitHub.
This project is licensed under the MIT License. The MIT License allows free use, copying, and distribution of the software. For more information, see the License File.
For more information or to contribute to the project, you can contact me using the following details:
- Email: [email protected]
- GitHub: isikmuhamm
- Project Page: Project URL