https://github.com/sempedia/upvote
https://github.com/sempedia/upvote
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/sempedia/upvote
- Owner: sempedia
- Created: 2025-08-03T16:12:04.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-08-03T17:22:29.000Z (2 months ago)
- Last Synced: 2025-08-03T18:24:12.959Z (2 months ago)
- Language: JavaScript
- Size: 15.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ณ๏ธ UpVote โ Feature Voting System
Welcome to **UpVote**, a simple full-stack application that lets users post feature ideas and upvote others. This project demonstrates a basic end-to-end voting system for features, including a backend API, a database, and a mobile-friendly frontend built with React Native (Expo). This project was developed with the assistance of a large language model to build a complete, end-to-end feature voting app in under 2 hours.
## ๐ Overview
**UpVote** is a feature suggestion and voting platform where users can:
* โ Submit new feature ideas
* ๐ผ Upvote features they want implemented
* ๐ฑ Use the app on a mobile device or via a web interface## ๐ง Challenge Goals
This challenge simulates the type of work expected from an AI-powered developer:
| Category | Goal |
| :--- | :--- |
| Prompting Skills | Clear, layered, iterative prompts to AI models |
| Tool Orchestration | Use AI to scaffold backend, frontend, DB, docs, and more |
| System Thinking | End-to-end logical data and component flow |
| Functionality | A working full-stack MVP experience |
| Multi-Platform Output | Functional UI for both web and mobile |
| Debugging / Edge Cases | Smart design decisions, error resilience |
| Prompt Logs | Included at the bottom of this README |---
## โ๏ธ Tech Stack
| Layer | Tool |
| :--- | :--- |
| Frontend | React Native (Expo) |
| Backend | Django and Django Rest Framework (DRF) |
| Database | PostgreSQL |
| AI Helped By | Claude Sonet 4 |
| Dev Tools | Docker, `psycopg2-binary` |---
## ๐ฉ Features
* โ Add new features via form input
* ๐ผ Upvote existing features
* ๐ List all feature requests with vote counts
* ๐ Persistent storage using PostgreSQL
* ๐ Easily extensible to web or other platforms## ๐ Project Structure
UpVote/
โโโ backend/
โ โโโ upvote_project/ # Django project
โ โโโ manage.py
โ โโโ core/ # Django app for core logic
โ โโโ requirements.txt
โ โโโ Dockerfile # Backend Docker image
โโโ frontend/
โ โโโ App.js # Main entry
โ โโโ src/
โ โโโ package.json
โโโ docker-compose.yml # Docker Compose file
โโโ .gitignore
โโโ README.md
โโโ prompts.txt # ๐ง AI prompting log---
## ๐ Setup Instructions
1. **Clone the Repo**
```bash
git clone [https://github.com/sempedia/UpVote.git](https://github.com/sempedia/UpVote.git)
cd upvote
```2. **Run with Docker Compose (Recommended)**
Make sure you have Docker and Docker Compose installed. This will start both the backend and frontend services.
```bash
docker-compose up --build -d
```* The **Backend API** will be accessible at: `http://localhost:8000`
* The **Frontend** will be accessible via Expo's QR code for mobile or in your browser at `http://localhost:19006`.To stop the services:
```bash
docker-compose down
```3. **Backend Setup (Manual)**
If you want to run the backend manually without Docker, ensure you have Python 3.9+ and PostgreSQL installed.
```bash
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```The API will be available at: `http://localhost:8000`
---
## ๐งช Sample API Endpoints
| Method | Endpoint | Description |
| :--- | :--- | :--- |
| `GET` | `/api/features/` | List all features |
| `POST` | `/api/features/` | Create a new feature |
| `POST` | `/api/features/{id}/vote/` | Upvote a feature |---
## ๐ง Prompting Strategy & AI Logs
* **Prompting** was done using Claude Sonet 4.
* **Logs** are saved in `prompts.txt`, showing:
* Scaffolding of the backend and frontend
* Architecture decisions
* Error fixing
* Git setup and `.gitignore`
* AI-generated documentation templates---
## ๐งน Known Limitations
* No authentication (public voting)
* Minimal validation on input
* Flat data model (no user linkage or comments)## โ Future Improvements
* ๐ User login and roles
* ๐ง AI-assisted feature prioritization
* ๐ฌ Comments per feature
* ๐ Sorting, filtering, and search
* โ๏ธ Cloud DB and deployment---
## ๐งโ๐ป Author
[Alina Bazavan](https://github.com/sempedia) ([@sempedia](https://github.com/sempedia))
## ๐ช License
**MIT License** โ free to use, adapt, or build on.