PortfolioApp — Paolo Villanueva.java — Android Studio
🌙
☀️
🔍
📁
🏗
🌿
HeroActivity.java
AboutMe.java
Projects.java
ContactMe.java
activity_main.xml
AndroidManifest.xml
build.gradle
package.json
README.md
Paolo Villanueva
Paolo Villanueva
Aspiring Full-Stack Web Developer & Software Engineer
React PHP Node.js MySQL Python Java
📍 Bohol, Philippines  ·  2 yrs exp  ·  10+ projects  ·  ● Open to Work
// HeroActivity.java — Entry point of Paolo Villanueva portfolio // Package: com.paolodev • Version: 1.0.0 • API Level: 33 package com.paolodev; import android.app.Activity; import android.os.Bundle; import com.paolodev.skills.*; import com.paolodev.projects.*; /** * ╔═══════════════════════════════════════════════════╗ * ║ PAOLO VILLANUEVA — WEB DEVELOPER ║ * ║ "To predict the future is to create it" ║ * ╚═══════════════════════════════════════════════════╝ * win with clean code + beautiful UI. */ @SuppressWarnings("HireThisDev") public class HeroActivity extends Activity { private final String name = "Paolo Villanueva"; private final String role = "Web Developer"; private final String location = "Bohol, Philippines 🇵🇭"; private final int yearsExp = 2; private final int projects = 10; private final boolean openToWork = true; // ← always true @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Every client is the hero. I'm their guide. Log.d("HERO", "Hi. I build web apps that actually work."); Log.d("HERO", "Clean code. Beautiful UI. Real results."); defineProblem(); // → AboutMe.java offerSolution(); // → AboutMe.java setContentView(R.layout.activity_hire_me); } // GitHub → github.com/Pawlo7777777 // LinkedIn → linkedin.com/in/paolo-villanueva // Email → paolovillanueva7777777@gmail.com } // ── Desktop: click tabs above • Mobile: use bottom nav ──
package com.paolodev; @DeveloperProfile(yearsActive = 2, openToWork = true) public class AboutMe implements Me { public Problem defineProblem() { String external = "Your business deserves a great website. But building one is slow, expensive, and most devs don't understand your vision."; String internal = "You feel like you're paying for code no one can maintain — and it still doesn't look the way you imagined."; String philosophical = "Great solutions are built for impact, not just investment."; return new Problem(external, internal, philosophical); } public List<String> agitate() { return Arrays.asList( "→ Missed deadlines from devs who overpromise", "→ Websites that look bad on mobile", "→ Code you can't understand or maintain", "→ Clients who ghost after taking your money", "→ Hours lost explaining your idea from scratch" ); } public Solution offerSolution() { Guide guide = new Guide("Paolo Villanueva"); guide.setEmpathy("I've shipped 10+ apps. I know how it feels."); guide.setAuthority("2 years building full-stack web systems."); return guide.buildSolution("Clean, maintainable code — on time."); } public SkillSet getSkills() { return SkillSet.builder() .add("HTML / CSS / JS", 95) .add("Tailwind CSS", 92) .add("ReactJS", 90) .add("MySQL / MongoDB", 88) .add("PHP", 85) .add("UI/UX Design", 82) .add("Node.js / Express", 78) .add("Java (Android)", 75) .add("Python / NumPy / CompVis", 70) .build(); } private final String[] facts = { "Fueled by 5 cups of coffee per day", "Based in beautiful Bohol", "IT graduate with hands-on project experience", "Always learning — currently exploring PHP frameworks", "10 happy clients and counting" }; }
/* ── SKILL METERS — rendered by IDE plugin ── */
HTML/CSS/JS
95%
Tailwind CSS
92%
ReactJS
90%
MySQL/MongoDB
88%
PHP
85%
UI/UX Design
82%
Node.js/Express
78%
Java Android
75%
Python/CompVis
70%
// These are the results. You could be next. package com.paolodev; public class Projects { public LinkedList<Project> launchProjects() { LinkedList<Project> portfolio = new LinkedList<>();
⬛ FuneralServicesManagement.javaWeb System
portfolio.add(new Project() .setTitle("Funeral Services Management") .setImpact("Real-time inventory + secure PayMongo payments") .setStack("React", "PHP", "MySQL", "WebSocket", "PayMongo") .setResult("Admin dashboard handling many records daily"));
⬛ HireLokal (Flutter Android)Flutter App
portfolio.add(new Project() .setTitle("HireLokal — Local Jobs Platform") .setImpact("Connecting Bohol freelancers with local businesses. Job posts, real-time chat, portfolio showcase.") .setStack("Flutter (Dart)", "Firebase Auth", "Cloud Firestore", "Provider") .setResult("In development — local job matching for Bohol freelancers"));
⬛ Barangay Bulletin App (Flutter)Flutter App
portfolio.add(new Project() .setTitle("Barangay Bulletin — Digital Announcements") .setImpact("Community hub for official announcements, emergency alerts, document requests, and events calendar.") .setStack("Flutter", "Firebase Realtime DB", "Push Notifications", "PDF export") .setResult("In development — digital announcements for Bohol communities"));
⬛ WasteDetectionManagement.pyAI / ML
portfolio.add(new Project() .setTitle("Waste Detection Management") .setImpact("Computer-vision waste classifier — 4 categories") .setStack("Python", "TensorFlow", "Pandas", "NumPy") .setResult("Automated sorting with tracking & reports"));
⬛ NSTPMonitoringApp.java (Android)Android
portfolio.add(new Project() .setTitle("NSTP Monitoring App") .setImpact("Native Android + Firebase real-time QR scanner") .setStack("Java", "Firebase", "ZXing") .setResult("Offline-capable mobile attendance companion"));
return portfolio; } } // Flutter native Android apps: HireLokal (jobs) + Barangay Bulletin (civic info).
// The moment the client takes the first step. package com.paolodev; @ReadyToWork(status = "AVAILABLE", responseTime = "< 24h") public class ContactMe { public void callToAction() { System.out.println("Your project doesn't have to stay an idea."); System.out.println("Let's ship it — together."); final String EMAIL = "paolovillanueva7777777@gmail.com"; final String GITHUB = "github.com/Pawlo7777777"; final String LINKEDIN = "linkedin.com/in/paolo-villanueva-85167a387"; } public String promiseSuccess() { return """ 1. Fast, responsive, modern web app 2. Code you (or any dev) can maintain easily 3. UI polished on every screen size 4. Clear communication from day one to launch 5. A partner who cares about YOUR success """; } // ── Quick-contact form — fill & hit sendMessage() ──
String yourName = ;
String yourEmail = ;
String subject = ;
String message = """
""";
// or email directly
} // end class ContactMe // "The best time to start your project was yesterday. // The second best time is right now." // — Paolo Villanueva, probably
<!-- res/layout/activity_main.xml --> <!-- Layout for Paolo's portfolio main screen --> <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/bg_dark" tools:context=".HeroActivity"> <!-- ── Hero header card ── --> <com.google.android.material.card.MaterialCardView android:id="@+id/heroCard" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="16dp" app:cardBackgroundColor="@color/surface" app:cardCornerRadius="12dp" app:cardElevation="4dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="20dp" android:gravity="center_vertical"> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/avatarImage" android:layout_width="72dp" android:layout_height="72dp" android:src="@drawable/paolo_avatar" app:civ_border_color="@color/accent_blue" app:civ_border_width="2dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginStart="16dp" android:orientation="vertical"> <TextView android:id="@+id/tvName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dev_name" android:textAppearance="@style/TextAppearance.Headline6" android:textColor="@color/text_bright" /> <TextView android:id="@+id/tvRole" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dev_role" android:textColor="@color/keyword_orange" android:textSize="12sp" /> <TextView android:id="@+id/tvOpenToWork" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:background="@drawable/badge_green" android:text="● Open to Work" android:textColor="@color/run_green" android:textSize="10sp" android:paddingHorizontal="8dp" /> </LinearLayout> </LinearLayout> </com.google.android.material.card.MaterialCardView> <!-- ── Bottom Navigation ── --> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottomNav" android:layout_width="0dp" android:layout_height="wrap_content" app:menu="@menu/bottom_nav_menu" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
<!-- AndroidManifest.xml --> <!-- Declares permissions, activities, and app metadata --> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.paolodev" android:versionCode="1" android:versionName="1.0.0"> <!-- ── Permissions ── --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CAMERA" /> <!-- QR scanning --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- scan feedback --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <application android:name=".PortfolioApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.PaoloDev.DarkIDE" android:networkSecurityConfig="@xml/network_security_config"> <!-- ── Activities ── --> <activity android:name=".HeroActivity" android:exported="true" android:label="@string/app_name" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".AboutMe" android:exported="false" /> <activity android:name=".Projects" android:exported="false" /> <activity android:name=".ContactMe" android:exported="false" /> <!-- ── Firebase / EmailJS metadata ── --> <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" /> <!-- ── File Provider (for sharing exports) ── --> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.paolodev.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> </application> </manifest>
// build.gradle (Module: app) // Groovy DSL — Android Gradle Plugin 8.x plugins { id 'com.android.application' id 'com.google.gms.google-services' // Firebase id 'kotlin-android' id 'kotlin-kapt' } android { namespace 'com.paolodev' compileSdk 34 defaultConfig { applicationId "com.paolodev" minSdk 24 targetSdk 34 versionCode 1 versionName "1.0.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { applicationIdSuffix ".debug" versionNameSuffix "-debug" debuggable true } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } buildFeatures { viewBinding true buildConfig true } } dependencies { // ── AndroidX Core ────────────────────────────────── implementation 'androidx.core:core-ktx:1.12.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.navigation:navigation-fragment-ktx:2.7.5' implementation 'androidx.navigation:navigation-ui-ktx:2.7.5' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2' // ── Material Design ──────────────────────────────── implementation 'com.google.android.material:material:1.11.0' // ── Firebase ─────────────────────────────────────── implementation platform('com.google.firebase:firebase-bom:32.7.0') implementation 'com.google.firebase:firebase-auth-ktx' implementation 'com.google.firebase:firebase-firestore-ktx' implementation 'com.google.firebase:firebase-storage-ktx' // ── Networking ───────────────────────────────────── implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' // ── Image Loading ────────────────────────────────── implementation 'com.github.bumptech.glide:glide:4.16.0' kapt 'com.github.bumptech.glide:compiler:4.16.0' implementation 'de.hdodenhof:circleimageview:3.1.0' // ── QR / Barcode ─────────────────────────────────── implementation 'com.journeyapps:zxing-android-embedded:4.3.0' // ── Testing ──────────────────────────────────────── testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
// package.json — front-end workspace (React + Vite) // Manages all web dependencies for Paolo's portfolio apps { "name": "paolodev-portfolio", "version": "1.0.0", "description": "Portfolio — Paolo Villanueva", "author": "Paolo Villanueva <paolovillanueva7777777@gmail.com>", "license": "MIT", "private": true, "scripts": { "dev": "vite", // start dev server "build": "vite build", // production bundle "preview": "vite preview", // preview build "lint": "eslint src --ext .jsx,.js", "format": "prettier --write src/", "test": "vitest run" }, "dependencies": { // ── React core ────────────────────────────────── "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.22.0", // ── Styling ───────────────────────────────────── "tailwindcss": "^3.4.0", "@headlessui/react": "^1.7.18", "framer-motion": "^11.0.3", // ── Networking ────────────────────────────────── "axios": "^1.6.7", "@emailjs/browser": "^4.3.3", // ── QR / Utils ────────────────────────────────── "qrcode.react": "^3.1.0", "react-webcam": "^7.2.0", "date-fns": "^3.3.1" }, "devDependencies": { "vite": "^5.1.0", "@vitejs/plugin-react": "^4.2.1", "eslint": "^8.57.0", "eslint-plugin-react": "^7.33.2", "prettier": "^3.2.5", "vitest": "^1.3.0", "autoprefixer": "^10.4.17", "postcss": "^8.4.35" }, "engines": { "node": ">=18.0.0", "npm": ">=9.0.0" }, "keywords": [ "portfolio", "react", "php", "mysql", "full-stack", "web-developer", "bohol", "philippines" ] }
📱 Paolo Villanueva — Portfolio ● Open to Work v1.0.0 MIT License
"To predict the future is to create it."

🚀 About
Hi, I'm Paolo Villanueva, a Web Developer based in Bohol, Philippines 🇵🇭.
I build fast, responsive web apps with clean code and beautiful UIs.
2 years of hands-on experience · 10+ shipped projects · always learning.

🛠 Tech Stack
LayerTechnologies
FrontendReact Tailwind CSS HTML/CSS/JS Vite
BackendPHP Node.js Express
DatabaseMySQL MongoDB Firebase
MobileJava (Android) ZXing QR
AI / MLPython TensorFlow NumPy Pandas
PaymentsPayMongo
AuthOAuth 2.0 Firebase Auth

📂 Featured Projects
1. Funeral Services Management System
Real-time inventory management with secure PayMongo payment integration.
React PHP MySQL WebSocket PayMongo
2. NSTP Attendance Monitoring (Web)
QR-code attendance tracking system serving 1,000+ students with OAuth login.
React PHP OAuth MySQL
3. Waste Detection & Management
Computer vision classifier sorting waste into 4 categories with automated reports.
Python TensorFlow Pandas NumPy
4. NSTP Monitoring App (Android)
Offline-capable native Android app with Firebase real-time sync and QR scanning.
Java Firebase ZXing
5. Restaurant Ordering System
End-to-end restaurant platform: orders, table reservations, kitchen display, payments.
React Express.js PayMongo MySQL

⚡ Quick Start
# Clone the repo git clone https://github.com/Pawlo7777777/jagords.git cd portfolio # Install dependencies npm install # Start dev server npm run dev # Production build npm run build
📬 Contact
ChannelLink
📧 Emailpaolovillanueva7777777@gmail.com
🐙 GitHubgithub.com/Pawlo7777777
💼 LinkedInlinkedin.com/in/paolo-villanueva-85167a387
🌐 Portfoliohttps://pawlo-portfolio.vercel.app/

Made with ☕ × 5 in Bohol, Philippines  ·  © 2026 Paolo Villanueva
▶ Run
🐞 Logcat
⬛ Terminal
⚠ Problems
INFO  Gradle build finished in 2.8s ✓ OK   Portfolio deployed → https://pawlo-portfolio.vercel.app/ INFO  Loading dev: Paolo Villanueva — Bohol 🇵🇭 INFO  Skills: React, PHP, MySQL, Node.js, Python, Java… OK   openToWork = true — available for new projects INFO  Waiting for your message…
🌿 main
✓ No errors
☕ Java 17
⚡ Gradle 8.x
📍 Bohol, PH
UTF-8
● Open to Work
🏠Hero
👤About
📂Projects
✉️Contact