YTΓ StaryUp
Fikirlerini paylaΕ, ekip bul β Share your ideas, find a team.
YTΓ StaryUp is a startup/project-sharing platform built for students at YΔ±ldΔ±z Teknik Γniversitesi (YTΓ). Post your startup ideas, discover projects from fellow students, upvote the ones you love, and apply to join teams.
Features
- Authentication β Email/password registration & login with JWT-based sessions
- Project Feed β Browse projects with category filters, sort by newest or most popular, pull-to-refresh
- Explore β Discover projects by category, search and filter
- Create Projects β Share your startup idea with a title, description, and category
- Project Detail β Full project view with About and Applications tabs
- Apply to Projects β Apply with a role and message; project owners can accept or reject
- Upvoting β Upvote projects you like (one per user)
- Notifications β Track your sent applications and received applications
- Profile β View your stats, projects, and applications
- Settings β Manage account, logout, about page
Categories
Technology Β· Social Β· Finance Β· Health Β· Education Β· Entertainment Β· Other
Tech Stack
iOS App
| Layer | Technology |
|---|
| UI Framework | SwiftUI |
| Architecture | MVVM (Model-View-ViewModel) |
| Local Storage | SwiftData |
| Networking | URLSession (native) |
| Dependencies | None β 100% Apple frameworks |
Backend
| Layer | Technology |
|---|
| Runtime | Node.js + TypeScript |
| Framework | Express.js |
| Database | PostgreSQL |
| ORM | Prisma |
| Auth | JWT + bcrypt |
| Validation | Zod |
Project Structure
βββ YTΓ StaryUp/ # iOS App (SwiftUI)
β βββ YTU__StaryUpApp.swift # App entry point
β βββ Models/ # Data models (User, Project, Application, Category)
β βββ Services/ # API service & mock service
β βββ ViewModels/ # MVVM view models
β βββ Views/
β βββ Auth/ # Login & registration
β βββ Feed/ # Feed, explore, notifications
β βββ CreateProject/ # Project creation form
β βββ Project/ # Project detail & apply sheet
β βββ Profile/ # User profile
β βββ Settings/ # Settings & about
β βββ Components/ # Reusable UI components
βββ YTΓ StaryUp.xcodeproj/ # Xcode project
βββ backend/ # Node.js API
βββ prisma/
β βββ schema.prisma # Database schema
βββ src/
βββ index.ts # Express server entry point
βββ lib/prisma.ts # Prisma client
βββ middleware/ # Auth & error handling middleware
βββ routes/ # API route handlers
Data Model
User
βββ id, email, password, name, bio, avatarURL
βββ projects[] β Project (1:N)
βββ applications[] β Application (1:N)
βββ upvotes[] β Upvote (1:N)
Project
βββ id, title, description, category, ownerId
βββ applications[] β Application (1:N)
βββ upvotes[] β Upvote (1:N)
Application
βββ id, role, message, status (PENDING | ACCEPTED | REJECTED)
βββ @@unique([projectId, applicantId])
Upvote
βββ id, userId, projectId
βββ @@unique([userId, projectId])
Getting Started
Prerequisites
- iOS App: Xcode 15+, iOS 17+
- Backend: Node.js 18+, PostgreSQL 14+
Backend Setup
cd backend
npm install
# Configure environment
cp .env.example .env
# Edit .env with your PostgreSQL credentials and a secure JWT secret
# Create the database
createdb staryup
# Push the schema to the database
npm run db:push
# Start the development server
npm run dev
The API server will start at http://localhost:3000.
iOS App Setup
- Open
YTΓ StaryUp.xcodeproj in Xcode
- Make sure the backend is running on
localhost:3000
- The app uses
http://localhost:3000/api in debug mode by default
- Build and run on a simulator or device (iOS 17+)
Note: No third-party dependencies required for the iOS app. It uses only Apple frameworks.
API Overview
Auth β /api/auth
| Method | Endpoint | Description | Auth |
|---|
POST | /register | Register new user | No |
POST | /login | Login | No |
GET | /me | Get current user | Yes |
PATCH | /me | Update profile | Yes |
Projects β /api/projects
| Method | Endpoint | Description | Auth |
|---|
GET | / | List all projects (filterable by category, sortable) | No |
GET | /:id | Get project details with applications | No |
POST | / | Create a project | Yes |
PATCH | /:id | Update project | Yes (owner) |
DELETE | /:id | Delete project | Yes (owner) |
POST | /:id/upvote | Toggle upvote | Yes |
GET | /user/:userId | Get a user's projects | No |
Applications β /api/applications
| Method | Endpoint | Description | Auth |
|---|
POST | / | Apply to a project | Yes |
GET | /my | List my applications | Yes |
GET | /received | List applications I received | Yes |
PATCH | /:id/status | Accept or reject an application | Yes (owner) |
DELETE | /:id | Withdraw application | Yes (applicant) |
Environment Variables
| Variable | Description | Example |
|---|
DATABASE_URL | PostgreSQL connection string | postgresql://postgres:password@localhost:5432/staryup?schema=public |
JWT_SECRET | Secret key for signing JWT tokens | Use a strong random string |
PORT | Server port | 3000 |
Database Management
# Open Prisma Studio (visual database editor)
npm run db:studio
# Generate Prisma client after schema changes
npm run db:generate
# Push schema changes to database
npm run db:push
# Create a migration
npm run db:migrate
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature)
- Commit your changes (
git commit -m 'Add some amazing feature')
- Push to the branch (
git push origin feature/amazing-feature)
- Open a Pull Request
License
This project is licensed under the MIT License β see the LICENSE file for details.
Acknowledgments
Built with β€οΈ at YΔ±ldΔ±z Teknik Γniversitesi.
Author:
Fatih Kadir AkΔ±n