Skip to content

Commit d708243

Browse files
authored
chore(release): v3.1.0 - [CU-869bebnqf] (#258)
2 parents 01370a4 + 770047a commit d708243

370 files changed

Lines changed: 24296 additions & 4489 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 261 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,261 @@
1-
# Cross Platform
1+
<div align="center">
2+
<img src="https://cdn.raven.cmp27.space/light-raven.png" alt="Raven Logo" width="150" height="150">
3+
4+
# Raven Mobile App
5+
6+
**Caw Your Thoughts**
7+
8+
A modern, cross-platform social media application built with React Native and Expo.
9+
10+
[![React Native](https://img.shields.io/badge/React%20Native-0.81.5-61DAFB?logo=react)](https://reactnative.dev/)
11+
[![Expo](https://img.shields.io/badge/Expo-SDK%2054-000020?logo=expo)](https://expo.dev/)
12+
[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?logo=typescript)](https://www.typescriptlang.org/)
13+
14+
</div>
15+
16+
## Features
17+
18+
### Authentication & Security
19+
20+
- **Email/Password Authentication** - Secure sign-up and sign-in with email verification
21+
- **OAuth Integration** - Third-party authentication support
22+
- **Password Recovery** - Forgot password flow with email-based reset
23+
- **Multi-Account Support** - Account switcher for managing multiple profiles
24+
- **Secure Token Storage** - Uses Expo Secure Store for sensitive data
25+
26+
### Timeline & Feed
27+
28+
- **Home Timeline** - Personalized feed with posts from followed users
29+
- **Real-time Updates** - Live feed updates via Server-Sent Events (SSE)
30+
- **Infinite Scrolling** - Cursor-based pagination for smooth scrolling
31+
- **Pull-to-Refresh** - Refresh feed with pull gesture
32+
33+
### Tweets/Posts
34+
35+
- **Tweet Composer** - Rich text editor with support for:
36+
- Hashtag and mention highlighting
37+
- Emoji picker integration
38+
- Media attachments (up to 4 images/videos per tweet)
39+
- **Quote Tweets** - Retweet with your own commentary
40+
- **Reply Threads** - Nested conversation threads
41+
- **Tweet Actions** - Like, retweet, quote, and reply
42+
- **Media Grid** - Responsive media display for images and videos
43+
44+
### Direct Messaging
45+
46+
- **Real-time Chat** - Instant messaging with Socket.IO
47+
- **Message Reactions** - React to messages with emojis
48+
- **Image Sharing** - Send and view images in conversations
49+
- **Message Deletion** - Delete sent messages
50+
- **Conversation List** - View all active conversations
51+
52+
### Explore & Discovery
53+
54+
- **For You** - Curated content discovery
55+
- **Trending Topics** - Popular hashtags and trends
56+
- **Category Sections** - Browse by category (News, Sports, Entertainment)
57+
- **User Search** - Find users by name or username
58+
- **Tweet Search** - Search content with filters
59+
60+
### Search
61+
62+
- **Advanced Filters** - Filter by users, tweets, hashtags
63+
- **Recent Searches** - Quick access to search history
64+
- **Real-time Results** - Instant search suggestions
65+
66+
### Profile Management
67+
68+
- **Profile Customization** - Edit display name, bio, location, website
69+
- **Profile Picture** - Upload and crop profile images
70+
- **Header Image** - Custom profile banner
71+
- **Following/Followers** - View and manage connections
72+
- **Profile Tabs** - View tweets, replies, media, and likes
73+
74+
### Notifications
75+
76+
- **Push Notifications** - Firebase Cloud Messaging integration
77+
- **In-App Notifications** - Real-time notification feed
78+
- **Notification Types** - Likes, retweets, mentions, follows, replies
79+
80+
### Settings & Privacy
81+
82+
- **Appearance** - Theme customization (light/dark mode)
83+
- **Account Settings** - Manage account information
84+
- **Privacy Controls**:
85+
- Muted accounts management
86+
- Blocked accounts management
87+
- Content preferences
88+
- Interest customization
89+
90+
## Tech Stack
91+
92+
### Core
93+
94+
- **React Native** 0.81.5
95+
- **Expo** SDK 54
96+
- **TypeScript** 5.9
97+
98+
### State Management
99+
100+
- **Zustand** - Lightweight state management
101+
- **TanStack Query** (React Query) - Server state and caching
102+
103+
### Styling
104+
105+
- **NativeWind** 4 - TailwindCSS for React Native
106+
- **TailwindCSS** 3.4
107+
108+
### Navigation
109+
110+
- **React Navigation** 7 - Stack, Tab, Drawer, and Material Top Tabs
111+
112+
### Real-time
113+
114+
- **Socket.IO Client** - WebSocket-based real-time messaging
115+
- **React Native SSE** - Server-Sent Events for live updates
116+
117+
### Media
118+
119+
- **Expo Image** - High-performance image component
120+
- **Expo Image Picker** - Camera and gallery access
121+
- **Expo Video** - Video playback with Picture-in-Picture
122+
- **Expo Media Library** - Save and access device media
123+
124+
### Testing
125+
126+
- **Jest** - Unit testing framework
127+
- **Testing Library** - React Native testing utilities
128+
- **WebdriverIO** - End-to-end testing
129+
- **Appium** - Mobile automation
130+
- **MSW** - API mocking
131+
132+
### Other Notable Libraries
133+
134+
- **Shopify FlashList** - High-performance lists
135+
- **Lucide Icons** - Modern icon set
136+
- **React Native Gesture Handler** - Touch gestures
137+
- **React Native Popover View** - Contextual menus
138+
- **RN Emoji Keyboard** - Native emoji picker
139+
140+
## Getting Started
141+
142+
### Prerequisites
143+
144+
- Node.js 18+
145+
- pnpm
146+
- Expo CLI
147+
- Android Studio (for Android development)
148+
- Xcode (for iOS development, macOS only)
149+
150+
### Installation
151+
152+
1. Clone the repository:
153+
154+
```bash
155+
git clone https://github.com/Exo1i/raven-cross-platform
156+
cd raven
157+
```
158+
159+
2. Install dependencies:
160+
161+
```bash
162+
pnpm install
163+
```
164+
165+
3. Set up environment variables:
166+
167+
```bash
168+
cp .env.example .env
169+
```
170+
171+
Edit `.env` with your configuration values.
172+
173+
4. Start the development server:
174+
175+
```bash
176+
pnpm start
177+
```
178+
179+
### Running on Devices
180+
181+
```bash
182+
# Android
183+
pnpm android
184+
185+
# iOS
186+
pnpm ios
187+
```
188+
189+
### Building
190+
191+
Debug builds:
192+
193+
```bash
194+
./build-debug.sh
195+
```
196+
197+
Release builds:
198+
199+
```bash
200+
./build-release.sh
201+
```
202+
203+
## Scripts
204+
205+
| Command | Description |
206+
| --------------- | ------------------------------ |
207+
| `pnpm start` | Start Expo development server |
208+
| `pnpm android` | Run on Android device/emulator |
209+
| `pnpm ios` | Run on iOS device/simulator |
210+
| `pnpm web` | Run in web browser |
211+
| `pnpm test` | Run tests in watch mode |
212+
| `pnpm test:cov` | Run tests with coverage |
213+
| `pnpm e2e` | Run end-to-end tests |
214+
215+
## Configuration
216+
217+
### EAS Build
218+
219+
The project uses Expo Application Services (EAS) for building. Configuration is in `eas.json`:
220+
221+
- **Development** - Debug builds for development
222+
- **Preview** - Internal testing builds
223+
- **Production** - Release builds for app stores
224+
225+
### Firebase
226+
227+
Push notifications require Firebase configuration:
228+
229+
1. Create a Firebase project
230+
2. Add `google-services.json` for Android
231+
3. Set `GOOGLE_SERVICES_JSON` environment variable for CI/CD
232+
233+
## Licenses
234+
235+
### Fonts
236+
237+
- **Inter** - The app uses the [Inter font family](https://fonts.google.com/specimen/Inter) by Rasmus Andersson, licensed under the [SIL Open Font License 1.1](https://scripts.sil.org/OFL).
238+
239+
### Icons
240+
241+
- **Lucide Icons** - Licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
242+
- **Ionicons** - Licensed under the [MIT License](https://github.com/ionic-team/ionicons/blob/main/LICENSE).
243+
- **Expo Vector Icons** - A collection of icon sets, each with their respective licenses.
244+
245+
### Images
246+
247+
- App logo and splash screen images are original assets created for this project.
248+
- User-uploaded content is subject to the platform's terms of service.
249+
250+
### Code Quality
251+
252+
The project enforces code quality with:
253+
254+
- **ESLint** - Linting with Expo and TypeScript rules
255+
- **Prettier** - Code formatting
256+
- **Husky** - Git hooks for pre-commit checks
257+
- **TypeScript** - Strict type checking
258+
259+
## License
260+
261+
This project is licensed under the [MIT License](LICENSE).

app.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ export default ({ config }) => ({
3939

4040
plugins: [
4141
'expo-secure-store',
42-
'expo-localization',
4342
[
4443
'expo-media-library',
4544
{

babel.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,10 @@ module.exports = function (api) {
22
api.cache(true);
33
return {
44
presets: [['babel-preset-expo', { jsxImportSource: 'nativewind' }], 'nativewind/babel'],
5+
env: {
6+
test: {
7+
plugins: ['dynamic-import-node'],
8+
},
9+
},
510
};
611
};

0 commit comments

Comments
 (0)