Open to software engineering internships

Hi, I'm Wei Wenxuan — I build mobile & web apps that make things easier for people.

BS Information Technology student at FEU Institute of Technology, specializing in Web and Mobile Application development, and looking for a software engineering internship. I build practical products across the frontend, backend, and data layers — from Flutter apps and REST APIs to offline-first systems that stay useful when connectivity is limited.

FEU Institute of Technology BS Information Technology — WMA Flutter · Node.js · Offline-first
Portrait of Wei Wenxuan
Wei WenxuanManila, Philippines

Selected work

Things I've built

About

I build mobile and web apps that are practical to use.

I'm a BS Information Technology student at FEU Institute of Technology, specializing in Web and Mobile Application development. I like taking a real problem and turning it into an app people can actually use, whether that's a field app for coffee growers or a planner that keeps students on top of their deadlines. On mobile I work mostly in Flutter and Dart; on the web I've built with JavaScript, PHP, Laravel and CodeIgniter, backed by MySQL or SQLite. I care about clear, simple interfaces and apps that keep working when the connection doesn't. I'm looking for a software engineering internship where I can learn from an experienced team and contribute to real products.

Toolkit

What I work with

Mobile
FlutterDartKotlinSwiftOffline-first apps
Web
JavaScriptHTML5CSS3SvelteKitWordPressUI / UX
Backend
Node.jsExpressPHPLaravelCodeIgniterJavaSpringPythonFastAPIREST APIs
Data
MySQLPostgreSQLSQLiteFirebase AdminSchema design
AI
RAG pipelinesEmbeddingsOllamaOpenAI API
Cloud & deploy
AWSCloudflare WorkersVercelRenderRailwayGitHub PagescPanel
Also
C / C++SQLGitGitHub
All projects

Case study · Mobile

PicKape — Coffee Quality & Traceability System

Group capstoneMy role: Mobile developerFlutter · Android

PicKape is a farm-to-cup management app for coffee growers. Farmers record harvest batches in the field, scan them, track quality, and hand every bean a clear traceable story — even on farms where the network is unreliable.

Visit the live website

Problem

Farmers tracked harvests with paper logs. Records got lost, quality was judged by feel, and there was no way to trace a batch back to a farm or a harvest date.

Solution

A Flutter app paired with a Node.js API. Batches are created on the phone, stored locally first, then synced when a connection is available. Every batch carries farm and harvest details for full traceability.

My role — Mobile developer (Flutter)

  • Built the Flutter app screens: login, live dashboard, batch management, and farm traceability.
  • Implemented the offline-first layer on the phone — a local SQLite store and a sync manager that pushes and pulls batches through the REST API when the network returns.
  • Built QR batch scanning with the phone camera, linking each scan to its batch record.
  • Integrated the app with the team's Express API for authentication, image upload, and role-based flows.

Key features

Offline-first sync

Batches save to a local SQLite store first. A sync manager pushes and pulls through the API when the network returns, so no work is lost.

Live dashboard

The home screen streams assigned lots and harvest totals in real time, so field data shows up as it happens.

Farm traceability

Every batch links back to its farm and harvest details, giving each lot a clean, auditable story from field to cup.

Quality sorting (PQI)

A Preliminary Quality Indicator guides growers toward better sorting, with a clear note that the tool assists and can make mistakes.

QR batch scanning

Growers scan a batch in the field with the phone camera. Each scan is stored and linked to the batch record.

Guarded account flow

Password resets and profile changes run through an approved, moderated flow instead of open endpoints.

Architecture

Flutter App
PicKape mobile
REST / HTTPS
Express API
Node.js backend
SQL · Firebase
Storage
SQLite + MySQL
Local SQLite
offline sync

Tech stack

Projects

Case studies

Three apps I've built, from a Flutter field app to an AI document assistant. Each page covers the problem, how it works, and the decisions behind it.

All projects

Case study · AI

Knowledge Hub — Document Q&A with RAG

Personal projectPython · FastAPI · SQLiteLive on Render

Upload company documents (PDF, Word, Markdown) and ask questions in plain English. Knowledge Hub finds the passages that answer the question and replies only from them, citing every source so the answer can be checked.

Open the live demo View source

Problem

Answers to everyday questions such as "how do I claim travel expenses?" sit inside long policy PDFs. People ask the same questions repeatedly, and a chatbot that makes things up is worse than no answer.

Solution

Retrieval-augmented generation: index the documents, retrieve the most relevant passages for each question, and have the model answer only from those passages, with [S1]-style citations and a confidence score.

How it works

Indexing a document

  1. UploadPDF · DOCX · MD
  2. Extract textpypdf · python-docx
  3. Split into chunks~1,200 chars, overlapping
  4. Embedvector per chunk
  5. StoreSQLite + memory cache

Answering a question

  1. Questionsecrets filtered out
  2. Embed & comparecosine similarity
  3. Top 4 passageswith scores
  4. Model answersfrom passages only
  5. Answer[S1] citations · confidence

If the AI model is down or not configured, retrieval switches to BM25 keyword search and the app returns the best matching passages, clearly labelled, instead of an error.

Key decisions

Answer only from sources

The model is instructed to use the retrieved passages and nothing else, and to say when they don't contain the answer. Every claim carries a citation the reader can open.

Tag every vector with its model

Vectors from different embedding models can't be compared. Each one stores the model that made it, so switching models re-embeds automatically instead of silently returning wrong matches.

Degrade instead of failing

An AI outage shouldn't take search down with it. Uploads are still saved, and questions fall back to keyword search with an honest notice.

Any OpenAI-compatible provider

The AI layer talks plain HTTP, so it runs on a free local model with Ollama, on OpenAI, or on any compatible service, with no SDK lock-in and a lighter deploy.

Safe to share publicly

Demo mode adds per-IP rate limits, upload caps, a document limit, protected sample documents, and question history that is private to each visitor.

Real numbers only

The analytics page (questions per day, most cited documents, median response time, hit rate) is computed from stored questions, not placeholder figures.

Testing & deployment

Tech stack

All projects

Case study · Web app

Deadline Tracker — Assignment & Exam Planner

Personal projectJavaScript · PWAWorks offline

A planner for students that keeps every assignment and exam in one place, shows the week at a glance, and reminds you before things are due. It works offline and installs to a phone's home screen like an app.

Open the app

Problem

Deadlines are spread across Canvas, class group chats, and syllabi. In a busy week it's easy to miss one, and most planners need an account and a connection.

Solution

One list grouped into Overdue, Due today, This week, and Later, with a calendar and reminders. Everything stays on the device, so it opens instantly and works with no signal.

Key features

Week at a glance

Counts for overdue, today, and this week, a 7-day strip, and a month calendar you can tap to filter.

Reminders that fire once

Each deadline is announced once when it enters its reminder window, through notifications or an in-page message.

Add to your calendar

Exports upcoming deadlines as an .ics file with alarms and weekly repeats, so your phone reminds you even when the app is closed.

Canvas import

Reads a Canvas calendar feed, previews new and changed items, and updates existing ones instead of duplicating them.

Offline & installable

A service worker caches the app, and a web manifest lets it install to the home screen and open with no connection.

Backup & restore

Export everything to a JSON file and merge or replace it later, on the same device or a new one.

Key decisions

Keep data on the device

No account and no server means instant loading, privacy, and full offline use. The trade-off is no automatic sync between devices, which JSON backup and calendar export cover.

Scope the service worker

The offline cache is limited to the tracker's own files, so installing it never interferes with the rest of this portfolio site.

Hand reliable reminders to the calendar

A web page can't wake itself up to notify you once it's closed. Exporting alarms to the phone's calendar app solves that without a backend.

Repeats you can undo

Finishing a weekly item creates next week's copy; unchecking by mistake removes that copy again, so repeats never pile up as duplicates.

Testing

Tech stack

About

IT student specializing in Web & Mobile Application development. I build practical mobile and web apps: Flutter apps that keep working offline, PHP and JavaScript web systems, and a Python/FastAPI document Q&A service that uses retrieval-augmented generation (RAG). Looking for a software engineering internship where I can learn from an experienced team and contribute to real products.

Projects

PicKape — Coffee Quality & Traceability System

Group capstone · My role: mobile developer (Flutter)

pickape.com · Mobile demo video

  • Built the Flutter app screens for login, the live dashboard, batch management, and farm-to-harvest traceability.
  • Implemented the offline-first layer on the phone: a local SQLite store and a sync manager that pushes and pulls batches through the REST API when the network returns.
  • Built QR batch scanning with the phone camera, linking each scan to its batch record.
  • Integrated the app with the team's Express API for authentication, image upload, and role-based flows.

Knowledge Hub — Document Q&A with RAG

Personal project · Python, FastAPI, SQLite

Live demo · Source

  • Indexes PDF, Word, and Markdown files and answers questions only from retrieved passages, with [S1]-style source citations and a confidence score.
  • Works with Ollama, OpenAI, or any OpenAI-compatible API; tracks which embedding model produced each vector and falls back to BM25 keyword search when the model is unavailable.
  • Public demo mode with per-IP rate limits, upload caps, and private history per visitor; 23 automated tests.

Deadline Tracker — Assignment & Exam Reminder App

Personal project · Offline productivity app

Open web demo

  • Tracks assignments and exams with courses, types, priorities, a weekly strip, and a month calendar.
  • Reminds you before each deadline, once per item, through the browser's notifications.
  • Works offline and installs to a phone's home screen; data stays on the device with JSON backup and restore.
  • Imports assignments from a Canvas calendar (.ics) feed.

Education

FEU Institute of Technology

BS Information Technology — Web & Mobile Application (WMA)

Expected graduation: August 2027

Languages & Tools

  • Dart, Kotlin, Swift
  • JavaScript, HTML5, CSS3
  • PHP, Java, Python, C / C++, SQL
  • Git, GitHub, UI / UX

Frameworks

  • Flutter
  • Node.js, Express, FastAPI
  • Laravel, CodeIgniter, Spring
  • SvelteKit, WordPress

Data & AI

  • MySQL, PostgreSQL, SQLite
  • Firebase Admin, schema design
  • RAG, embeddings, semantic search
  • Ollama, OpenAI-compatible APIs

Cloud & Deploy

  • AWS, Cloudflare Workers
  • Vercel, Render, Railway
  • GitHub Pages, cPanel

Spoken Languages

  • Mandarin Chinese (native)
  • English

Contact

Let's talk about internships.

I'm looking for an internship where I can build real mobile and web products and learn fast. Reach me through any channel below.

Available from
Mid-December 2026
Work setup
Onsite in Manila, hybrid, or remote
Internship
520-hour OJT for my BSIT program