English
PirateSocial is a modern social media platform for individuals with the pirate spirit, enabling real-time chats, posts, and secure connections with friends. Built with cutting-edge technologies, PirateSocial offers a seamless and scalable user experience.
- Real-time Messaging: Instantly chat with other pirates using Socket.IO.
- Group Chats: Create and manage topic-based groups.
- One-to-One and One-to-Many Chat: Support for direct messages and group communications.
- Media Sharing: Share images, files, and other media.
- Feed Post: Post and view pirate-like updates on your personal feed.
- Follow System: Follow friends to see their activities on the feed.
- Private Messaging: Secure and encrypted direct messages.
- Notifications:
- Real-time notifications: Delivered via Socket.IO for online users.
- Push notifications: Powered by FCM for offline users.
- Cross-platform Support: Accessible on desktop, mobile, and tablets.
- Caching: Optimized speed using Redis caching.
- Object Storage: Store media securely using AWS S3, delivered via CloudFront CDN.
- Next.js: A React framework for fast and SEO-friendly web apps.
- Tailwind CSS: For utility-first and modern styling.
- Socket.IO: Real-time communication for chat and notifications.
- TypeScript: Ensures type safety and better development flow.
- NestJS: A scalable and modular Node.js framework.
- Socket.IO: Manages real-time communication for chat and notifications.
- Prisma: Simplified database ORM for PostgreSQL.
- PostgreSQL: Relational database for storing user data, posts, and relationships.
- Cache - Redis: For caching frequently accessed data and user sessions.
- JWT: Authentication and session management.
- Docker: Containerization for deployment.
- NGINX: Reverse proxy for handling requests efficiently.
- AWS S3: Media object storage for uploaded images and files.
- CloudFront: CDN for delivering media content globally.
- Firebase Cloud Messaging (FCM): Push notifications for offline users.
-
Client-Side:
- Users interact via a Next.js frontend.
- Real-time chat and notifications through Socket.IO.
-
Backend:
- NestJS API: Handles business logic for posts, user management, and authentication.
- Socket.IO: Manages real-time communication for messages and notifications.
- Redis:
- Caches user sessions and frequently accessed feed data specific to each user for faster retrieval.
- Handles Pub/Sub mechanisms for Socket.IO events like chat updates and notifications.
- PostgreSQL: Stores structured data, such as user profiles, posts, likes, follows, and comments.
-
Cache:
- Feed Caching: User-specific feeds are cached in Redis to minimize database load and ensure fast response times.
- Session Management: Active user sessions and frequently accessed data are stored in Redis.
-
Object Storage:
- AWS S3: Stores media uploads securely.
- CloudFront: Serves images and files via a global CDN for faster delivery.
-
Notifications:
- Socket.IO Notifications: Real-time alerts for active users.
- FCM Push Notifications: Offline notifications for mobile devices.
-
Real-time Chat:
- Socket.IO: Enables real-time messaging for:
- One-to-One Chat: Direct messaging between users.
- Group Chat: Communication within groups with one-to-many capabilities.
- Socket.IO: Enables real-time messaging for:
User --> [Client Application] --> [Load Balancer] --> [App Service]
| |
|--[Request Data]--------------------> [App Service]
| |
| |-- [Cache Module] ✔
| |-- [Feed Module] (Read/Write Feed) ✔
| |-- [Notification Module] ✔
| |-- [Task Queue Module]
| |
|----(Read/Write Data)------------------> [Database]
| |------> [Redis Cache] (Feed Data, User Data) ✔
|
|--(Static Assets)-------------------> [AWS S3 + CloudFront] ----> [Global CDN]
|--(Background Task)--------> [Task Queue]
|
|----- [Background Worker] (Process Task)
- Node.js (>= 14.x)
- PostgreSQL (>= 14.x)
- Redis
- Docker (optional but recommended)
-
Clone the repository:
git clone https://github.com/TDevUIT/PirateSocial.git cd PirateSocial
-
Install Dependencies:
# Frontend cd apps/web npm install # Backend cd apps/server npm install # Turbo npm install
-
Environment Variables:
- Set up
.env
files for frontend and backend using provided.env.example
files.
- Set up
-
Run the Development Server:
# Frontend (Next.js) cd apps/web npm run dev # Backend (NestJS) cd apps/server npm run dev
#turbo npm run dev
-
Run with Docker:
docker-compose up --build
This command starts:
- Frontend and Backend
- PostgreSQL and Redis containers
PirateSocial/
├── apps ──web/ # Next.js frontend code
│ ├── apps/ # Routes and pages
│ ├── components/ # Reusable components
│ └── public/ # Static assets
│ ──server/ # NestJS backend code
│ ├── src/ # Source code
│ ├── prisma/ # Prisma schema and migrations
│ └── test/ # Unit and integration tests
│
├── docker-compose.yml
├── .env.example # Environment configuration examples
└── README.md # Documentation
We welcome community contributions! Follow these steps:
-
Fork the repository.
-
Create a feature branch for your changes:
git checkout -b feature/your-feature-name
-
Commit your changes and push:
git commit -m "Add your feature description" git push origin feature/your-feature-name
-
Open a pull request with a detailed description of your changes.
PirateSocial is licensed under the MIT License.
- User Analytics: Add insights into user engagement and interactions.
- Video Uploads: Extend media support for short video posts.
- Advanced Search: Search for posts, users, and hashtags.
- Dark Mode: Improve user experience with dark theme support.
Enjoy your journey on PirateSocial! Arr matey! 🚀
日本語
PirateSocial は、海賊の精神を持つ個人向けの現代的なソーシャルメディアプラットフォームで、リアルタイムチャット、投稿、友人との安全な接続を可能にします。最先端の技術で構築されたPirateSocialは、シームレスでスケーラブルなユーザーエクスペリエンスを提供します。
- リアルタイムメッセージング: Socket.IOを使用して他の海賊と即座にチャット。
- グループチャット: トピックベースのグループを作成および管理。
- 1対1および1対多チャット: ダイレクトメッセージとグループコミュニケーションをサポート。
- メディア共有: 画像、ファイル、その他のメディアを共有。
- フィード投稿: 個人フィードに海賊のようなアップデートを投稿および表示。
- フォローシステム: 友達をフォローしてフィードでの活動を確認。
- プライベートメッセージング: 安全で暗号化されたダイレクトメッセージ。
- 通知:
- リアルタイム通知: オンラインユーザー向けにSocket.IO経由で配信。
- プッシュ通知: オフラインユーザー向けにFCMを搭載。
- クロスプラットフォームサポート: デスクトップ、モバイル、タブレットでアクセス可能。
- キャッシング: Redisキャッシュを使用した最適化された速度。
- オブジェクトストレージ: AWS S3を使用してメディアを安全に保存し、CloudFront CDN経由で配信。
- Next.js: 高速でSEOフレンドリーなWebアプリのためのReactフレームワーク。
- Tailwind CSS: ユーティリティファーストでモダンなスタイリング用。
- Socket.IO: チャットと通知のためのリアルタイム通信。
- TypeScript: 型の安全性とより良い開発フローを保証。
- NestJS: スケーラブルでモジュール式のNode.jsフレームワーク。
- Socket.IO: チャットと通知のためのリアルタイム通信を管理。
- Prisma: PostgreSQL用の簡略化されたデータベースORM。
- PostgreSQL: ユーザーデータ、投稿、関係を保存するためのリレーショナルデータベース。
- Redis: 頻繁にアクセスされるデータとユーザーセッションのキャッシュ用。
- JWT: 認証とセッション管理。
- Docker: デプロイメント用のコンテナ化。
- NGINX: リクエストを効率的に処理するためのリバースプロキシ。
- AWS S3: アップロードされた画像とファイル用のメディアオブジェクトストレージ。
- CloudFront: メディアコンテンツをグローバルに配信するためのCDN。
- Firebase Cloud Messaging (FCM): オフラインユーザー向けのプッシュ通知。
-
クライアント側:
- ユーザーはNext.jsフロントエンドを介してインタラクト。
- Socket.IOを介したリアルタイムチャットと通知。
-
バックエンド:
- NestJS API: 投稿、ユーザー管理、認証のビジネスロジックを処理。
- Socket.IO: メッセージと通知のリアルタイム通信を管理。
- Redis:
- ユーザーセッションと、各ユーザーに固有の頻繁にアクセスされるフィードデータをキャッシュして、より高速な取得を実現。
- チャットの更新や通知などのSocket.IOイベントのPub/Subメカニズムを処理。
- PostgreSQL: ユーザープロファイル、投稿、いいね、フォロー、コメントなどの構造化データを保存。
-
キャッシュ:
- フィードキャッシュ: ユーザー固有のフィードはRedisにキャッシュされ、データベースの負荷を最小限に抑え、高速な応答時間を確保。
- セッション管理: アクティブなユーザーセッションと頻繁にアクセスされるデータはRedisに保存。
-
オブジェクトストレージ:
- AWS S3: メディアアップロードを安全に保存。
- CloudFront: より高速な配信のためにグローバルCDN経由で画像とファイルを配信。
-
通知:
- Socket.IO通知: アクティブユーザー向けのリアルタイムアラート。
- FCMプッシュ通知: モバイルデバイス向けのオフライン通知。
-
リアルタイムチャット:
- Socket.IO: 以下に対応するリアルタイムメッセージングを有効化。
- 1対1チャット: ユーザー間のダイレクトメッセージング。
- グループチャット: 1対多の機能を備えたグループ内でのコミュニケーション。
- Socket.IO: 以下に対応するリアルタイムメッセージングを有効化。
ユーザー --> [クライアントアプリケーション] --> [ロードバランサー] --> [アプリサービス]
| |
|--[データリクエスト]--------------------> [アプリサービス]
| |
| |-- [キャッシュモジュール] ✔
| |-- [フィードモジュール] (フィードの読み書き) ✔
| |-- [通知モジュール] ✔
| |-- [タスクキューモジュール]
| |
|----(データの読み書き)------------------> [データベース]
| |------> [Redisキャッシュ] (フィードデータ、ユーザーデータ) ✔
|
|--(静的アセット)-------------------> [AWS S3 + CloudFront] ----> [グローバルCDN]
|--(バックグラウンドタスク)--------> [タスクキュー]
|
|----- [バックグラウンドワーカー] (タスクの処理)
- Node.js (>= 14.x)
- PostgreSQL (>= 14.x)
- Redis
- Docker (オプションですが推奨)
-
リポジトリのクローン:
git clone https://github.com/TDevUIT/PirateSocial.git cd PirateSocial
-
依存関係のインストール:
# フロントエンド cd apps/web npm install # バックエンド cd apps/server npm install # Turbo npm install
-
環境変数:
- 提供された
.env.example
ファイルを使用して、フロントエンドとバックエンド用に.env
ファイルをセットアップします。
- 提供された
-
開発サーバーの実行:
# フロントエンド (Next.js) cd apps/web npm run dev # バックエンド (NestJS) cd apps/server npm run dev
#turbo npm run dev
-
Dockerで実行:
docker-compose up --build
このコマンドは以下を起動します。
- フロントエンドとバックエンド
- PostgreSQLとRedisコンテナ
PirateSocial/
├── apps ──web/ # Next.js フロントエンドコード
│ ├── apps/ # ルートとページ
│ ├── components/ # 再利用可能なコンポーネント
│ └── public/ # 静的アセット
│ ──server/ # NestJS バックエンドコード
│ ├── src/ # ソースコード
│ ├── prisma/ # Prisma スキーマと移行
│ └── test/ # ユニットテストと統合テスト
│
├── docker-compose.yml
├── .env.example # 環境設定の例
└── README.md # ドキュメント
コミュニティの貢献を歓迎します!次の手順に従ってください。
-
リポジトリをフォーク。
-
変更のための機能ブランチを作成します。
git checkout -b feature/your-feature-name
-
変更をコミットしてプッシュします。
git commit -m "機能の説明を追加" git push origin feature/your-feature-name
-
変更の詳細な説明とともにプルリクエストを開きます。
PirateSocialはMITライセンスの下でライセンスされています。
- ユーザー分析: ユーザーエンゲージメントとインタラクションに関するインサイトを追加。
- 動画アップロード: 短い動画投稿のためのメディアサポートを拡張。
- 高度な検索: 投稿、ユーザー、ハッシュタグを検索。
- ダークモード: ダークテーマサポートによるユーザーエクスペリエンスの向上。
PirateSocialでの旅をお楽しみください!アール・メイティー!🚀
Tiếng Việt
PirateSocial là một nền tảng mạng xã hội hiện đại dành cho những người có tinh thần cướp biển, cho phép trò chuyện, đăng bài theo thời gian thực và kết nối an toàn với bạn bè. Được xây dựng bằng các công nghệ tiên tiến, PirateSocial mang đến trải nghiệm người dùng liền mạch và có khả năng mở rộng.
- Nhắn tin theo thời gian thực: Trò chuyện ngay lập tức với những người cướp biển khác bằng Socket.IO.
- Trò chuyện nhóm: Tạo và quản lý các nhóm dựa trên chủ đề.
- Trò chuyện một-một và một-nhiều: Hỗ trợ tin nhắn trực tiếp và giao tiếp nhóm.
- Chia sẻ phương tiện: Chia sẻ hình ảnh, tệp tin và các phương tiện khác.
- Đăng bài trên Feed: Đăng và xem các cập nhật kiểu cướp biển trên feed cá nhân của bạn.
- Hệ thống theo dõi: Theo dõi bạn bè để xem các hoạt động của họ trên feed.
- Tin nhắn riêng tư: Tin nhắn trực tiếp an toàn và được mã hóa.
- Thông báo:
- Thông báo theo thời gian thực: Được gửi qua Socket.IO cho người dùng trực tuyến.
- Thông báo đẩy: Được hỗ trợ bởi FCM cho người dùng ngoại tuyến.
- Hỗ trợ đa nền tảng: Có thể truy cập trên máy tính để bàn, điện thoại di động và máy tính bảng.
- Bộ nhớ đệm: Tối ưu hóa tốc độ bằng bộ nhớ đệm Redis.
- Lưu trữ đối tượng: Lưu trữ phương tiện một cách an toàn bằng AWS S3, được phân phối qua CloudFront CDN.
- Next.js: Một framework React cho các ứng dụng web nhanh và thân thiện với SEO.
- Tailwind CSS: Để tạo kiểu theo hướng tiện ích và hiện đại.
- Socket.IO: Giao tiếp theo thời gian thực cho trò chuyện và thông báo.
- TypeScript: Đảm bảo an toàn kiểu và quy trình phát triển tốt hơn.
- NestJS: Một framework Node.js có khả năng mở rộng và theo mô-đun.
- Socket.IO: Quản lý giao tiếp theo thời gian thực cho trò chuyện và thông báo.
- Prisma: ORM cơ sở dữ liệu đơn giản hóa cho PostgreSQL.
- PostgreSQL: Cơ sở dữ liệu quan hệ để lưu trữ dữ liệu người dùng, bài đăng và các mối quan hệ.
- Redis: Để lưu vào bộ nhớ đệm dữ liệu và phiên người dùng được truy cập thường xuyên.
- JWT: Xác thực và quản lý phiên.
- Docker: Container hóa để triển khai.
- NGINX: Reverse proxy để xử lý các yêu cầu một cách hiệu quả.
- AWS S3: Lưu trữ đối tượng phương tiện cho hình ảnh và tệp tin được tải lên.
- CloudFront: CDN để phân phối nội dung phương tiện trên toàn cầu.
- Firebase Cloud Messaging (FCM): Thông báo đẩy cho người dùng ngoại tuyến.
-
Phía Client:
- Người dùng tương tác thông qua frontend Next.js.
- Trò chuyện và thông báo theo thời gian thực thông qua Socket.IO.
-
Backend:
- NestJS API: Xử lý logic nghiệp vụ cho các bài đăng, quản lý người dùng và xác thực.
- Socket.IO: Quản lý giao tiếp theo thời gian thực cho tin nhắn và thông báo.
- Redis:
- Lưu vào bộ nhớ đệm phiên người dùng và dữ liệu feed được truy cập thường xuyên, cụ thể cho từng người dùng để truy xuất nhanh hơn.
- Xử lý các cơ chế Pub/Sub cho các sự kiện Socket.IO như cập nhật trò chuyện và thông báo.
- PostgreSQL: Lưu trữ dữ liệu có cấu trúc, chẳng hạn như hồ sơ người dùng, bài đăng, lượt thích, theo dõi và bình luận.
-
Bộ nhớ đệm:
- Bộ nhớ đệm Feed: Các feed dành riêng cho người dùng được lưu trong bộ nhớ đệm Redis để giảm thiểu tải cơ sở dữ liệu và đảm bảo thời gian phản hồi nhanh.
- Quản lý phiên: Các phiên người dùng đang hoạt động và dữ liệu được truy cập thường xuyên được lưu trữ trong Redis.
-
Lưu trữ đối tượng:
- AWS S3: Lưu trữ các tải lên phương tiện một cách an toàn.
- CloudFront: Phục vụ hình ảnh và tệp tin thông qua CDN toàn cầu để phân phối nhanh hơn.
-
Thông báo:
- Thông báo Socket.IO: Cảnh báo theo thời gian thực cho người dùng đang hoạt động.
- Thông báo đẩy FCM: Thông báo ngoại tuyến cho các thiết bị di động.
-
Trò chuyện theo thời gian thực:
- Socket.IO: Cho phép nhắn tin theo thời gian thực cho:
- Trò chuyện một-một: Nhắn tin trực tiếp giữa người dùng.
- Trò chuyện nhóm: Giao tiếp trong nhóm với khả năng một-nhiều.
- Socket.IO: Cho phép nhắn tin theo thời gian thực cho:
Người dùng --> [Ứng dụng Client] --> [Bộ cân bằng tải] --> [Dịch vụ ứng dụng]
| |
|--[Yêu cầu dữ liệu]--------------------> [Dịch vụ ứng dụng]
| |
| |-- [Mô-đun bộ nhớ đệm] ✔
| |-- [Mô-đun Feed] (Đọc/Ghi Feed) ✔
| |-- [Mô-đun thông báo] ✔
| |-- [Mô-đun hàng đợi tác vụ]
| |
|----(Đọc/Ghi dữ liệu)------------------> [Cơ sở dữ liệu]
| |------> [Bộ nhớ đệm Redis] (Dữ liệu Feed, Dữ liệu người dùng) ✔
|
|--(Tài sản tĩnh)-------------------> [AWS S3 + CloudFront] ----> [CDN toàn cầu]
|--(Tác vụ nền)--------> [Hàng đợi tác vụ]
|
|----- [Worker nền] (Xử lý tác vụ)
- Node.js (>= 14.x)
- PostgreSQL (>= 14.x)
- Redis
- Docker (tùy chọn nhưng được khuyến nghị)
-
Sao chép repository:
git clone https://github.com/TDevUIT/PirateSocial.git cd PirateSocial
-
Cài đặt dependencies:
# Frontend cd apps/web npm install # Backend cd apps/server npm install # Turbo npm install
-
Biến môi trường:
- Thiết lập các tệp
.env
cho frontend và backend bằng cách sử dụng các tệp.env.example
được cung cấp.
- Thiết lập các tệp
-
Chạy máy chủ phát triển:
# Frontend (Next.js) cd apps/web npm run dev # Backend (NestJS) cd apps/server npm run dev
#turbo npm run dev
-
Chạy bằng Docker:
docker-compose up --build
Lệnh này khởi động:
- Frontend và Backend
- PostgreSQL và Redis containers
PirateSocial/
├── apps ──web/ # Mã frontend Next.js
│ ├── apps/ # Các routes và trang
│ ├── components/ # Các components có thể tái sử dụng
│ └── public/ # Các tài sản tĩnh
│ ──server/ # Mã backend NestJS
│ ├── src/ # Mã nguồn
│ ├── prisma/ # Schema và migrations Prisma
│ └── test/ # Các bài kiểm thử đơn vị và tích hợp
│
├── docker-compose.yml
├── .env.example # Các ví dụ về cấu hình môi trường
└── README.md # Tài liệu
Chúng tôi hoan nghênh những đóng góp từ cộng đồng! Hãy làm theo các bước sau:
-
Fork repository.
-
Tạo một branch tính năng cho các thay đổi của bạn:
git checkout -b feature/your-feature-name
-
Commit các thay đổi của bạn và push:
git commit -m "Thêm mô tả tính năng của bạn" git push origin feature/your-feature-name
-
Mở một pull request với mô tả chi tiết về các thay đổi của bạn.
PirateSocial được cấp phép theo Giấy phép MIT.
- Phân tích người dùng: Thêm thông tin chi tiết về tương tác và mức độ tương tác của người dùng.
- Tải video lên: Mở rộng hỗ trợ phương tiện cho các bài đăng video ngắn.
- Tìm kiếm nâng cao: Tìm kiếm bài đăng, người dùng và hashtag.
- Chế độ tối: Cải thiện trải nghiệm người dùng với hỗ trợ chủ đề tối.
Chúc bạn có một hành trình thú vị trên PirateSocial! Arr matey! 🚀