1
package dev.ovi.portfolio.ui.screens
2
3
import androidx.compose.foundation.*
4
import androidx.compose.foundation.layout.*
5
import androidx.compose.foundation.shape.CircleShape
6
import androidx.compose.foundation.shape.RoundedCornerShape
7
import androidx.compose.material.icons.Icons
8
import androidx.compose.material.icons.filled.*
9
import androidx.compose.material3.*
10
import androidx.compose.runtime.*
11
import androidx.compose.ui.unit.dp
12
13
// Sample data object
14
object DeveloperData {
15
val name = "Ismam Hasan Ovi"
16
val role = "Android Developer"
17
val bio = "Passionate Android Developer specializing in Kotlin & Jetpack Compose. Building innovative mobile apps that solve real-world problems."
14
val imageRes = R.drawable.profile
19
val isAvailable = true
20
21
val skills = listOf(
22
"Kotlin", "Java", "Jetpack Compose",
23
"Firebase", "MVVM", "Room Database"
24
)
25
26
val socialLinks = mapOf(
27
"GitHub" to "github.com/oviii-001",
28
"LinkedIn" to "linkedin.com/in/ismamovi",
29
"Email" to "ismamhasanovi@gmail.com"
30
)
31
}
32
33
@Composable
34
fun HomeScreen() {
35
Column(
36
modifier = Modifier
37
.fillMaxSize()
38
.verticalScroll(rememberScrollState())
39
.padding(16.dp),
40
verticalArrangement = Arrangement.spacedBy(16.dp)
41
) {
42
43
// Profile Card
44
ElevatedCard(
45
modifier = Modifier.fillMaxWidth(),
46
shape = RoundedCornerShape(24.dp)
47
) {
48
Row(modifier = Modifier.padding(20.dp)) {
49
AsyncImage(
50
painter = painterResource(DeveloperData.imageRes),
51
modifier = Modifier.size(72.dp).clip(CircleShape)
52
)
53
54
Column(Modifier.padding(start = 16.dp)) {
55
Text(DeveloperData.name, style = M3Typography.titleLarge)
56
Text(DeveloperData.role, color = M3Colors.primary)
57
AssistChip(
58
onClick = { },
59
label = { Text("Open to Work") }
60
)
61
}
62
}
63
Text(DeveloperData.bio, Modifier.padding(20.dp))
64
}
65
66
// Quick Actions
67
Row(horizontalArrangement = Arrangement.spacedBy(12.dp)) {
68
FilledTonalButton(onClick = { }, Modifier.weight(1f)) {
69
Icon(Icons.Default.Code, null)
70
Text("GitHub")
71
}
72
FilledTonalButton(onClick = { }, Modifier.weight(1f)) {
73
Icon(Icons.Default.Person, null)
74
Text("LinkedIn")
75
}
76
FilledTonalButton(onClick = { }, Modifier.weight(1f)) {
77
Icon(Icons.Default.Email, null)
78
Text("Email")
79
}
80
}
81
82
// Tech Stack
83
OutlinedCard(Modifier.fillMaxWidth()) {
84
Column(Modifier.padding(16.dp)) {
85
Text("Tech Stack", fontWeight = FontWeight.Medium)
86
FlowRow(Modifier.padding(top = 12.dp)) {
87
DeveloperData.skills.forEach { skill ->
88
SuggestionChip(
89
onClick = { },
90
label = { Text(skill) }
91
)
92
}
93
}
94
}
95
}
96
97
// Featured Project
98
ElevatedCard(Modifier.fillMaxWidth()) {
99
AsyncImage(
100
model = "/app_logo.png",
101
modifier = Modifier.height(120.dp).fillMaxWidth()
102
)
103
Column(Modifier.padding(16.dp)) {
104
Text("DIU Campus Schedule", fontWeight = FontWeight.Medium)
105
Text(
106
"A complete campus assistant app for DIU",
107
color = M3Colors.onSurfaceVariant
108
)
109
}
110
}
111
}
112
}