Skip to content

Commit e6304e8

Browse files
committed
stable release candidate
1 parent fdf4957 commit e6304e8

File tree

7 files changed

+400
-397
lines changed

7 files changed

+400
-397
lines changed

README.md

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1-
# BMC-ART-GALLERY
1+
# Gulmohar
22

3-
## Features
3+
Gulmohar is the official digital art gallery and creative platform for Bharata Mata College. It serves as a space for students to showcase their artistic talents, including paintings, sketches, digital art, short films and editorial content. It has an admin dashboard for managing submissions and users (different repo).
4+
<br />
5+
<br />
6+
Fork and **contribute** to help us enhance the platform!
47

5-
- NativeWind v4
6-
- Dark and light mode
7-
- Android Navigation Bar matches mode
8-
- Persistent mode
9-
- Common components
10-
- ThemeToggle, Avatar, Button, Card, Progress, Text, Tooltip
8+
Live Deployment: <https://gulmohar.bharatamatacollege.in>
9+
10+
## Tech Stack
11+
12+
This project is built as a universal application (Web, Android, iOS) using the following technologies:
13+
14+
- **Framework**: React Native (Expo SDK 54)
15+
- **Language**: TypeScript
16+
- **Styling**: NativeWind v4 (Tailwind CSS)
17+
- **Package Manager**: pnpm
18+
- **Deployment**: EAS (Expo Application Services) and github pages
1119

1220
## Build
1321

@@ -22,6 +30,31 @@ eas deploy
2230
### Android
2331

2432
```
25-
# Use replace profile with your own
33+
# Use profile with your own
2634
eas build --profile development --platform android --local
2735
```
36+
37+
## TODO
38+
39+
[] Sort content (improved filtering and sorting options).
40+
41+
[] Student verification system.
42+
43+
[] Add Blog category for written submissions.
44+
45+
[] Publish mobile application to Google Play Store.
46+
47+
## Getting Started
48+
49+
To run this project locally:
50+
51+
```
52+
# Clone the repository
53+
git clone https://github.com/jude7733/Gulmohar.git
54+
55+
# Install dependencies
56+
pnpm install
57+
58+
# Start the development server
59+
npx expo start
60+
```

app/(tabs)/about.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ const AnimatedSection = ({ children, delay = 0 }: { children: React.ReactNode; d
3434
);
3535
};
3636

37-
3837
const StatItem = ({ value, label }: { value: string; label: string }) => (
3938
<View className="items-center">
4039
<Text className="text-2xl md:text-4xl font-bold text-white">{value}</Text>
@@ -82,7 +81,7 @@ export default function About() {
8281
style={{ width: 150, height: 150 }}
8382
contentFit="contain"
8483
/>
85-
<Text className="text-4xl font-bold mt-6 text-foreground">About Gulmohar Art Gallery</Text>
84+
<Text className="text-4xl font-bold mt-6 text-foreground text-center">About Gulmohar Art Gallery</Text>
8685
<Text className="text-lg text-center mt-2 text-muted-foreground">
8786
Bharata Mata College, Thrikkakara is home to a diverse community of talented artists with unique skills and creations. However, their art often remains unseen and unappreciated outside of small circles. This platform was created to bridge that gap — providing a space where their work can be shared, celebrated, and accessed by a wider audience. The idea for this platform was initially coined by the students of Malayalam department.
8887
</Text>
@@ -157,6 +156,14 @@ export default function About() {
157156
<Feather name="tool" size={18} className="text-foreground" color="red" />
158157
<Text className="text-base font-semibold text-foreground">Report a Bug</Text>
159158
</Pressable>
159+
{/* Added Contribute to Project Link */}
160+
<Pressable
161+
className="flex-row items-center justify-center gap-3 p-3 bg-black dark:bg-white rounded-lg mt-2"
162+
onPress={() => openLink('https://github.com/jude7733/Gulmohar')}
163+
>
164+
<Feather name="github" size={18} className="text-white dark:text-black" />
165+
<Text className="text-base font-semibold text-white dark:text-black">Contribute to Project</Text>
166+
</Pressable>
160167
</View>
161168
</View>
162169
</AnimatedSection>
@@ -172,8 +179,8 @@ export default function About() {
172179
<View className="flex-row flex-wrap justify-around items-center gap-y-6">
173180
<StatItem value="50+" label="Artworks" />
174181
<StatItem value="25+" label="Artists" />
175-
<StatItem value="12" label="Departments" />
176-
<StatItem value="7" label="Categories" />
182+
<StatItem value="25" label="Departments" />
183+
<StatItem value="6" label="Categories" />
177184
</View>
178185
</View>
179186
</View>

app/(tabs)/upload.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ const getMediaType = (mimeType?: string): MediaItem['type'] => {
3838
// Generate batch years dynamically
3939
const generateBatchYears = (): string[] => {
4040
const currentYear = new Date().getFullYear();
41-
const endYear = currentYear + 5;
4241
const years: string[] = [];
43-
for (let year = 2000; year <= endYear; year++) {
42+
for (let year = 2020; year <= currentYear; year++) {
4443
years.push(year.toString());
4544
}
4645
return years;
@@ -292,7 +291,7 @@ export default function Upload() {
292291
<FormField label="Description">
293292
<TextInput value={body} onChangeText={setBody} style={[styles.input, styles.textArea]} className='bg-secondary text-foreground' placeholderTextColor="#9ca3af" multiline placeholder="A short description of the artwork..." />
294293
</FormField>
295-
<FormField label="Upload Art File">
294+
<FormField label="Upload art file (image, video, audio, pdf)">
296295
<Pressable onPress={handlePickDocument} className='bg-secondary text-foreground' style={styles.filePicker}>
297296
<Feather name="upload" size={20} color="red" />
298297
<Text className="text-secondary-foreground font-semibold ml-2">{file ? file.name : "Choose a file"}</Text>

components/filerender/VideoPlayer.tsx

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,35 @@
11
import { useVideoPlayer, VideoView } from 'expo-video';
2-
import { StyleSheet, View } from 'react-native';
2+
import { StyleSheet, View, useWindowDimensions, Platform } from 'react-native';
33

44
interface VideoPlayerProps {
55
url: string;
66
}
77

88
export default function VideoPlayer({ url }: VideoPlayerProps) {
9+
const { height } = useWindowDimensions();
910
const player = useVideoPlayer(url, (player) => {
1011
player.loop = true;
1112
});
1213

14+
const HEIGHT_LIMIT = 800;
15+
const INCREASED_VIDEO_HEIGHT = 500;
16+
const INCREASED_CONTAINER_HEIGHT = 600;
17+
18+
const isLargeDesktop = Platform.OS === 'web' && height > HEIGHT_LIMIT;
19+
1320
return (
14-
<View style={styles.videoBackground}>
21+
<View style={[
22+
styles.videoBackground,
23+
isLargeDesktop && { maxHeight: INCREASED_CONTAINER_HEIGHT }
24+
]}>
1525
<VideoView
16-
style={styles.video}
26+
style={[
27+
styles.video,
28+
isLargeDesktop && { maxHeight: INCREASED_VIDEO_HEIGHT }
29+
]}
1730
player={player}
31+
allowsFullscreen
1832
allowsPictureInPicture
19-
fullscreenOptions={{
20-
enable: true
21-
}}
22-
crossOrigin="anonymous"
2333
/>
2434
</View>
2535
);
@@ -31,8 +41,11 @@ const styles = StyleSheet.create({
3141
maxHeight: 400,
3242
width: '100%',
3343
backgroundColor: '#000',
44+
justifyContent: 'center',
45+
alignItems: 'center',
3446
},
3547
video: {
48+
width: '100%',
3649
maxHeight: 300,
3750
flex: 1,
3851
},

components/footer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function Footer() {
2424
}
2525

2626
const handleDownloadAPK = () => {
27-
Linking.openURL('https://expo.dev/artifacts/eas/fAxzy2nSi4g6FYN18Nc4Lj.apk');
27+
Linking.openURL('https://expo.dev/artifacts/eas/rwrEhysje8MNNWGdGbdkyV.apk');
2828
};
2929

3030
return (

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
"@rn-primitives/slot": "~1.2.0",
2424
"@rn-primitives/tooltip": "~1.2.0",
2525
"@somesoap/react-native-image-palette": "^1.2.2",
26-
"@supabase/supabase-js": "^2.79.0",
26+
"@supabase/supabase-js": "^2.80.0",
2727
"class-variance-authority": "^0.7.1",
28-
"expo": "~54.0.22",
28+
"expo": "~54.0.23",
2929
"expo-build-properties": "~1.0.9",
3030
"expo-constants": "~18.0.10",
3131
"expo-dev-client": "~6.0.17",
@@ -43,7 +43,7 @@
4343
"nativewind": "latest",
4444
"react": "19.1.0",
4545
"react-dom": "19.1.0",
46-
"react-native": "0.81.4",
46+
"react-native": "0.81.5",
4747
"react-native-blob-util": "^0.22.2",
4848
"react-native-gesture-handler": "~2.28.0",
4949
"react-native-pdf": "^6.7.7",

0 commit comments

Comments
 (0)