Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
233 changes: 66 additions & 167 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,170 +1,69 @@
# 🎯 Profile Rank (FitFinder) – Find opportunities Meant for You

Welcome to **Profile Rank**, a smart and community-driven platform where you can discover **global scholarships, conferences, hackathons, research programs, apprenticeships, and more**, all based on your profile.

> Think of it as a chill version of LinkedIn, but focused only on non-job opportunities that help you grow. We help you figure out where you're most likely to get accepted, based on your skills, goals, and even your LinkedIn profile. You'll get suggestions from the UI when you submit your profile, and community members can comment on opportunities and share their experiences.

---

## 🌍 What Can You Do with Profile Rank?

✨ **Discover Opportunities**
Search or browse through opportunities curated by other users:
- 🎓 Scholarships
- 🧑‍🔬 Research Programs
- 🧑‍🏫 Apprenticeships
- 🧑‍💻 Hackathons
- 🌎 Conferences

... and see if you're a good fit or what you can do to become one.

🧠 **Find Your Fit**
Once you create your **FitProfile**, the system will show you how well you match with each opportunity using a percentage based on your:
- Skills
- Education & GPA
- Location
- LinkedIn Profile
- Past experience

💬 **Read Success Stories**
Each opportunity can feature real prep tips, success stories, and checklists shared by people who got selected.

✅ **Submit New Opportunities**
Logged-in users can submit global opportunities to help others grow. Once approved by admins, they'll be featured on the platform.

🔖 **Bookmark and Track**
Save opportunities, view past submissions, and help others in any way you can.

---

## 🧰 Tech Stack

| Part | Tech Used |
|----------------|-------------------------------------|
| Frontend | React.js, TailwindCSS |
| Backend | Node.js with Express or Firebase |
| Database | MongoDB or Firebase Realtime DB |
| Auth | Firebase Authentication (Google) |
| AI Integration | OpenAI or basic ML model (future) |
| LinkedIn Sync | LinkedIn scraping via Puppeteer/API |
| Hosting | Vercel, Render, or Firebase Hosting |

---

## 💻 Pages in the MVP

1. **Home** – Overview of platform and highlights of other sections
2. **Opportunities** – List view with filters (type, location, deadline, fit score), full info, apply link, success stories, and chance level
3. **Submit Opportunity** – Form to submit a new opportunity (login required)
4. **My Dashboard** – Saved opportunities, fit history, profile editor
5. **FitProfile Setup** – Onboarding flow or edit page
6. **Success Stories** – A separate feed of real user stories and tips
7. **Admin Panel (optional)** – For moderators to approve or reject opportunities

---

## 🧑‍💻 Getting Started

> Ready to contribute? We welcome beginners! 🙌

### 📦 Prerequisites
Make sure you have:
- Git and GitHub account
- Node.js and npm installed
- Code editor (VS Code recommended)

### 🚀 Clone & Run Locally

```bash
git clone https://github.com/Code-Social/fitfinder.git
cd fitfinder
npm install
npm start
# React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

```js
export default tseslint.config([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...

// Remove tseslint.configs.recommended and replace with this
...tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
...tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
...tseslint.configs.stylisticTypeChecked,

// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```

Open `http://localhost:3000` in your browser.

---

## 🛠️ How to Contribute

We follow beginner-friendly open source practices.

### 📌 Step-by-Step Guide

1. Go to the [Issues](https://github.com/Code-Social/fitfinder/issues) tab
2. Look for labels like `good first issue`, `help wanted`, or `feature request`
3. Comment on the issue to get assigned
4. **Fork** the repo
5. Create a new branch (e.g., `feature/form-validation`)
6. Make your changes
7. Create a Pull Request (PR) – we'll review and guide you

### 🔁 Example Commands

```bash
git checkout -b feature/profile-card
git add .
git commit -m "feat: add profile card component"
git push origin feature/profile-card
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:

```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default tseslint.config([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```

---

## 🔎 Areas You Can Contribute To

- Frontend UI
- Form validation
- Building filters and dropdowns
- Bookmark/save functionality
- Firebase integration
- Data models (MongoDB/Firebase)
- LinkedIn profile scraping
- Creating dummy data or success stories
- Writing docs and tooltips
- ...and more!

---

## 💬 Community and Help

Questions? Ideas? Join us here:
- 💬 [Discord](https://discord.gg/MSTNyRSPYW)
- 💡 [Instagram](https://instagram.com/codesocial.tech)
- 🌐 [Website](https://codesocial.tech)

---

## ✨ Project Mentors

<table>
<tr>
<td align="center">
<a href="https://github.com/arushi2610">
<img src="https://avatars.githubusercontent.com/u/91735359?v=4" width="100px;" alt="arushi2610"/>
<br />
<sub><b>arushi2610</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Rizwan102003">
<img src="https://avatars.githubusercontent.com/u/90749649?v=4" width="100px;" alt="Rizwan102003"/>
<br />
<sub><b>Rizwan102003</b></sub>
</a>
</td>
</tr>
</table>

---

## 💖 Code of Conduct

Be kind, helpful, and welcoming to everyone.

---

## ⭐ Support the Project

If you like the idea, give this repo a ⭐ and share it with friends.
Let’s make opportunity discovery smarter and more inclusive 🚀
23 changes: 23 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { globalIgnores } from 'eslint/config'

export default tseslint.config([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs['recommended-latest'],
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
},
])
12 changes: 12 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Fit Finder</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading