πŸ“¦ f / ytu-staryup

β˜… 6 stars β‘‚ 1 forks πŸ‘ 6 watching
πŸ“₯ Clone https://github.com/f/ytu-staryup.git
HTTPS git clone https://github.com/f/ytu-staryup.git
SSH git clone git@github.com:f/ytu-staryup.git
CLI gh repo clone f/ytu-staryup
Loading files...
πŸ“„ README.md

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

LayerTechnology
UI FrameworkSwiftUI
ArchitectureMVVM (Model-View-ViewModel)
Local StorageSwiftData
NetworkingURLSession (native)
DependenciesNone β€” 100% Apple frameworks

Backend

LayerTechnology
RuntimeNode.js + TypeScript
FrameworkExpress.js
DatabasePostgreSQL
ORMPrisma
AuthJWT + bcrypt
ValidationZod

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

MethodEndpointDescriptionAuth
POST/registerRegister new userNo
POST/loginLoginNo
GET/meGet current userYes
PATCH/meUpdate profileYes

Projects β€” /api/projects

MethodEndpointDescriptionAuth
GET/List all projects (filterable by category, sortable)No
GET/:idGet project details with applicationsNo
POST/Create a projectYes
PATCH/:idUpdate projectYes (owner)
DELETE/:idDelete projectYes (owner)
POST/:id/upvoteToggle upvoteYes
GET/user/:userIdGet a user's projectsNo

Applications β€” /api/applications

MethodEndpointDescriptionAuth
POST/Apply to a projectYes
GET/myList my applicationsYes
GET/receivedList applications I receivedYes
PATCH/:id/statusAccept or reject an applicationYes (owner)
DELETE/:idWithdraw applicationYes (applicant)

Environment Variables

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql://postgres:password@localhost:5432/staryup?schema=public
JWT_SECRETSecret key for signing JWT tokensUse a strong random string
PORTServer port3000

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