Skip to content

Commit fed801f

Browse files
Created the project collaboration platform for putting your project in a socity that people those are intersted.
1 parent d337f7a commit fed801f

18 files changed

Lines changed: 748 additions & 623 deletions

File tree

README.md

Lines changed: 80 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,80 @@
1-
# ProjectArchive
2-
3-
**ProjectArchive** is a static website designed for students at **Engineering College** to showcase their projects. This platform provides students with visibility, helps them secure internships, and allows recruiters to assess their potential.
4-
5-
---
6-
7-
## 🚀 Features
8-
- 📌 **Centralized Repository** – A dedicated space to store and showcase student projects.
9-
- 🌍 **Industry Exposure** – Helps students gain recognition and attract recruiters.
10-
- 🔍 **Recruitment Support** – Enables alumni and hiring managers to find talented students.
11-
- 💡 **Inspiration & Collaboration** – Encourages students to innovate and collaborate on projects.
12-
13-
---
14-
15-
## 📽️ Demo Video
16-
[![Watch the Video](https://img.youtube.com/vi/YOUR_VIDEO_ID/maxresdefault.jpg)](https://codecompasss.github.io/project_archive/public/video/demowebsitevideo.mp4)
17-
18-
---
19-
20-
## 🛠️ Tech Stack
21-
- **Frontend:** HTML, CSS, JavaScript
22-
- **Hosting:** GitHub Pages
23-
24-
---
25-
26-
## 👨‍💻 Team Members
27-
- **Shadil AM**
28-
- **Sorraj**
29-
- **Abhijith**
30-
- **Abhiram**
31-
32-
---
33-
34-
## 🏫 Want to Use This for Your Own College?
35-
36-
Absolutely! You can easily **reuse and customize** this project for your own institution or student community:
37-
38-
1. **Fork this repository**
39-
This lets you receive any future updates while keeping your own customizations.
40-
41-
2. **Clone your fork locally**
42-
```bash
43-
git clone https://github.com/yourusername/ProjectArchive.git
44-
```
45-
46-
3. **Update Branding**
47-
- Change the **name in the loading screen and navbar** to match your institution.
48-
This can be done in the **`components/` folder**.
49-
- Look for `Loading.js`, `Navbar.js`, or similarly named files.
50-
51-
4. **Edit Projects Data**
52-
- All project information is stored in:
53-
```
54-
data/project.json
55-
```
56-
- To **add**, **edit**, or **delete** project details, make changes directly in this file.
57-
58-
5. **Deploy with GitHub Pages**
59-
Once you're done customizing, deploy it using GitHub Action:
60-
- Go to your repo settings → Pages → select the main branch and `/ (root)` folder.
61-
62-
---
63-
64-
## 📜 How to Contribute
65-
1. Fork the repository.
66-
2. Clone it: `git clone https://github.com/yourusername/ProjectArchive.git`
67-
3. Create a new branch: `git checkout -b feature-name`
68-
4. Make your changes and commit: `git commit -m 'Your Message'`
69-
5. Push changes: `git push origin feature-name`
70-
6. Open a Pull Request.
71-
72-
---
73-
74-
## 📩 Contact
75-
For any queries, feel free to reach out:
76-
- 📧 Email: [shadilrayyan2@gmail.com]
77-
- 🌐 Website: [ProjectArchive](https://codecompasss.github.io/project_archive/)
78-
79-
---
80-
81-
✨ *Empowering students by showcasing their projects!*
82-
1+
# Project Collaboration Platform
2+
3+
## 🚀 Overview
4+
A modern web platform for students, professionals, and innovators to share project ideas and find collaborators. Users can post their project ideas, specify required skills, and provide contact information (Instagram, LinkedIn, Email, WhatsApp) for interested collaborators to reach out.
5+
6+
## 🎯 Purpose
7+
- Help users find collaborators for their projects.
8+
- Showcase project ideas and attract interest from the community.
9+
- Enable easy contact and networking between project owners and interested contributors.
10+
11+
## 🛠️ Features
12+
- Add project ideas with type, department, technology, description, and more.
13+
- Optional contact info fields: Instagram, LinkedIn, Email, WhatsApp.
14+
- Filter and search projects by type, department, technology, etc.
15+
- View your own projects in your profile.
16+
- Edit and manage your projects.
17+
- Secure authentication and user management.
18+
19+
## 🌐 Use Cases
20+
- Students looking for teammates for academic or hobby projects.
21+
- Professionals seeking collaborators for side projects or startups.
22+
- Hackathon teams forming around new ideas.
23+
24+
## 🏗️ Tech Stack
25+
- **Frontend:** Next.js, React, Tailwind CSS
26+
- **Backend:** Next.js API routes, Drizzle ORM, PostgreSQL
27+
- **Auth:** Firebase Authentication
28+
- **Database:** PostgreSQL
29+
30+
## ⚙️ Setup & Installation
31+
32+
### 1. Clone the Repository
33+
```bash
34+
git clone https://github.com/yourusername/project-collaboration.git
35+
cd project-collaboration
36+
```
37+
38+
### 2. Install Dependencies
39+
```bash
40+
npm install
41+
```
42+
43+
### 3. Environment Variables
44+
Create a `.env.local` file in the root directory and add the following:
45+
```env
46+
DATABASE_URL=postgresql://user:password@localhost:5432/yourdb
47+
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
48+
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
49+
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
50+
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
51+
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
52+
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
53+
FIREBASE_ADMIN_PRIVATE_KEY=your_firebase_admin_private_key
54+
FIREBASE_ADMIN_CLIENT_EMAIL=your_firebase_admin_client_email
55+
```
56+
57+
### 4. Database Migration & Seeding
58+
```bash
59+
npx drizzle-kit push
60+
npx tsx drizzle/seed.ts
61+
```
62+
63+
### 5. Run the Development Server
64+
```bash
65+
npm run dev
66+
```
67+
Visit [http://localhost:3000](http://localhost:3000) to view the app.
68+
69+
## 📦 Project Structure
70+
- `app/` — Next.js app directory (pages, API routes, components)
71+
- `components/` — Shared React components
72+
- `drizzle/` — Database schema, migrations, and seed scripts
73+
- `lib/` — Utility libraries, database, and Firebase config
74+
- `types/` — TypeScript types
75+
76+
## 🤝 Contributing
77+
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
78+
79+
## 📄 License
80+
[MIT](LICENSE)

WIKI.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Project Collaboration Platform Wiki
2+
3+
Welcome to the Project Collaboration Platform Wiki!
4+
5+
## About
6+
This platform helps users share project ideas and find collaborators. Users can post projects, specify required skills, and provide contact info for easy networking.
7+
8+
## Key Features
9+
- Add and manage project ideas
10+
- Filter/search projects
11+
- Profile page for your projects
12+
- Contact project owners via Instagram, LinkedIn, Email, WhatsApp
13+
- Admin panel for managing categories and options
14+
- Secure authentication with Firebase
15+
16+
---
17+
18+
## Getting Started
19+
20+
### 1. Clone the Repository
21+
Clone the repository to your local machine:
22+
```bash
23+
git clone https://github.com/yourusername/project-collaboration.git
24+
cd project-collaboration
25+
```
26+
27+
### 2. Install Dependencies
28+
Install all required Node.js packages:
29+
```bash
30+
npm install
31+
```
32+
33+
### 3. Environment Setup
34+
Create a `.env.local` file in the root directory. You can copy from an example if provided:
35+
```bash
36+
cp .env.example .env.local
37+
```
38+
Fill in the following variables with your own credentials:
39+
```env
40+
DATABASE_URL=postgresql://user:password@localhost:5432/yourdb
41+
42+
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
43+
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
44+
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
45+
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
46+
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
47+
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
48+
49+
FIREBASE_ADMIN_PRIVATE_KEY=your_firebase_admin_private_key
50+
FIREBASE_ADMIN_CLIENT_EMAIL=your_firebase_admin_client_email
51+
```
52+
53+
### 4. Database Migration & Seeding
54+
Run the following commands to set up your database schema and seed initial data:
55+
```bash
56+
npx drizzle-kit push
57+
npx tsx drizzle/seed.ts
58+
```
59+
60+
### 5. Start the Development Server
61+
Start the app locally:
62+
```bash
63+
npm run dev
64+
```
65+
Visit [http://localhost:3000](http://localhost:3000) in your browser.
66+
67+
---
68+
69+
## Usage
70+
- **Add a Project:** Use the "Add Project" page to submit your idea and contact info.
71+
- **View Projects:** Browse and filter projects on the home page.
72+
- **Profile:** See and manage your own projects in your profile.
73+
- **Edit/Delete:** Edit or delete your projects from your profile page.
74+
- **Contact:** Use the provided links to contact project owners via Instagram, LinkedIn, Email, or WhatsApp.
75+
- **Admin:** Use the admin panel to manage categories and options.
76+
77+
---
78+
79+
## Advanced Configuration
80+
- **Custom Domains:** You can specify a custom domain for your project if needed.
81+
- **Seeding More Data:** Edit the files in `drizzle/seed-*.ts` to add more categories, options, or example projects.
82+
- **Production Deployment:** Configure your environment variables and database for production. Use a process manager (like PM2) or deploy to Vercel/Netlify for serverless hosting.
83+
84+
---
85+
86+
## Troubleshooting
87+
- **Database Errors:** Ensure your `DATABASE_URL` is correct and the database server is running.
88+
- **Firebase Auth Issues:** Double-check all Firebase credentials in your `.env.local` file.
89+
- **Migrations Fail:** If migrations fail, check for existing tables or conflicting schema changes.
90+
- **Port in Use:** If port 3000 is in use, set `PORT=xxxx` in your `.env.local`.
91+
92+
---
93+
94+
## FAQ
95+
- **How do I add a new category?** Use the admin panel to manage categories.
96+
- **How do I reset my password?** Use the Firebase authentication reset link.
97+
- **How do I change the project branding?** Edit the Navbar and Footer components in `components/`.
98+
- **How do I add more contact methods?** Extend the project schema and forms in the codebase.
99+
100+
---
101+
102+
## More
103+
For detailed documentation, see the README or open an issue for help. You can also expand this wiki with:
104+
- API Reference
105+
- Admin Guide
106+
- Deployment Guide
107+
- Customization Tips

app/add-project/page.tsx

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ const AddProjectPage = () => {
4747
members: [{ name: "", linkedin: "" }],
4848
selectedCategoryOptions: {} as Record<string, string>,
4949
customDomain: "",
50+
contactInstagram: "",
51+
contactLinkedIn: "",
52+
contactEmail: "",
53+
contactWhatsApp: "",
5054
};
5155

5256
const [formData, setFormData] = useState(initialFormState);
@@ -106,6 +110,10 @@ const AddProjectPage = () => {
106110
formData.selectedCategoryOptions["Domain"] === "Other"
107111
? formData.customDomain
108112
: undefined,
113+
contactInstagram: formData.contactInstagram || undefined,
114+
contactLinkedIn: formData.contactLinkedIn || undefined,
115+
contactEmail: formData.contactEmail || undefined,
116+
contactWhatsApp: formData.contactWhatsApp || undefined,
109117
};
110118

111119
try {
@@ -282,6 +290,58 @@ const AddProjectPage = () => {
282290
value={formData.projectLink}
283291
/>
284292

293+
<h2 className="text-lg font-semibold mt-6 mb-2">Contact Information (Optional)</h2>
294+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
295+
<div>
296+
<label htmlFor="contactInstagram" className="block text-sm font-medium text-gray-700">Instagram</label>
297+
<input
298+
type="text"
299+
id="contactInstagram"
300+
name="contactInstagram"
301+
value={formData.contactInstagram}
302+
onChange={handleChange}
303+
className="mt-1 block w-full border border-gray-300 rounded-md shadow-sm p-2"
304+
placeholder="Instagram username or link"
305+
/>
306+
</div>
307+
<div>
308+
<label htmlFor="contactLinkedIn" className="block text-sm font-medium text-gray-700">LinkedIn</label>
309+
<input
310+
type="text"
311+
id="contactLinkedIn"
312+
name="contactLinkedIn"
313+
value={formData.contactLinkedIn}
314+
onChange={handleChange}
315+
className="mt-1 block w-full border border-gray-300 rounded-md shadow-sm p-2"
316+
placeholder="LinkedIn profile link"
317+
/>
318+
</div>
319+
<div>
320+
<label htmlFor="contactEmail" className="block text-sm font-medium text-gray-700">Email</label>
321+
<input
322+
type="email"
323+
id="contactEmail"
324+
name="contactEmail"
325+
value={formData.contactEmail}
326+
onChange={handleChange}
327+
className="mt-1 block w-full border border-gray-300 rounded-md shadow-sm p-2"
328+
placeholder="Email address"
329+
/>
330+
</div>
331+
<div>
332+
<label htmlFor="contactWhatsApp" className="block text-sm font-medium text-gray-700">WhatsApp</label>
333+
<input
334+
type="text"
335+
id="contactWhatsApp"
336+
name="contactWhatsApp"
337+
value={formData.contactWhatsApp}
338+
onChange={handleChange}
339+
className="mt-1 block w-full border border-gray-300 rounded-md shadow-sm p-2"
340+
placeholder="WhatsApp number"
341+
/>
342+
</div>
343+
</div>
344+
285345
{formData.members.map((member, index) => (
286346
<div key={index} className="flex items-center gap-2">
287347
<input

app/api/categories/route.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export async function DELETE(req: NextRequest) {
128128
return NextResponse.json({ message: "Category ID is required for deletion." }, { status: 400 });
129129
}
130130

131+
await db.delete(projectOptions).where(eq(projectOptions.categoryId, categoryId));
131132
await db.delete(categoryOptionValues).where(eq(categoryOptionValues.categoryId, categoryId));
132133

133134
const [deletedCategory] = await db.delete(categories).where(eq(categories.categoryId, categoryId)).returning();

0 commit comments

Comments
 (0)