Skip to content

GDSC-FSC/weekly-project-showcase-sp-25

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ weekly-project-showcase-sp-25 πŸš€

Showcasing Student Innovation and Collaborative Development with Bun & TypeScript.

GitHub Workflow Status License GitHub release (latest SemVer) TypeScript Bun


🧭 Table of Contents


✨ Overview / Introduction

weekly-project-showcase-sp-25 serves as the foundational repository for the GDSC-FSC's Spring 2025 weekly project showcase. At its core, it's designed as a robust starting point for developing a platform where students can present their projects, share their learning, and foster a collaborative environment.

Currently, this repository provides a minimalist "Hello World" application built with Bun and TypeScript, demonstrating a basic setup ready for expansion. It leverages Bun's incredibly fast runtime and TypeScript's type-safety to provide a modern and efficient development experience.

Purpose & Goals

  • Provide a Standardized Base: Offer a consistent and reliable template for all projects participating in the showcase.
  • Encourage Innovation: Facilitate an environment where students can experiment and build diverse projects.
  • Foster Collaboration: Create a platform for sharing knowledge, giving feedback, and building together.
  • Showcase Talent: Highlight the skills and creativity of GDSC-FSC members.

Problem Solved

This project addresses the challenge of providing a uniform and high-performance base for student projects, ensuring consistency across submissions while allowing for individual creativity. It aims to streamline the setup process, enabling participants to focus more on project development rather than environment configuration.

Target Audience

  • GDSC-FSC Members: Students participating in the weekly project showcase.
  • Project Mentors/Leads: Individuals guiding student projects and evaluating submissions.
  • Developers: Anyone interested in a minimal Bun + TypeScript setup.

⬆️ Back to Top


πŸ’‘ Feature Highlights

While weekly-project-showcase-sp-25 is currently a foundational "Hello World" application, its design anticipates a rich set of features for a full-fledged project showcase platform:

  • βœ… Bun Runtime Integration: Leverages the incredibly fast Bun JavaScript runtime for optimal performance and developer experience.
  • βœ… TypeScript Support: Full type-safety and modern JavaScript features via TypeScript, enhancing code quality and maintainability.
  • βœ… Modular Project Structure: A clear and organized directory structure designed for easy expansion.
  • βœ… Efficient Dependency Management: Utilizes Bun's built-in package manager for rapid dependency installation and management.
  • πŸ” Extensible Core: Designed to be easily extended with new functionalities, such as:
    • πŸš€ Project Submission & Management: A system for students to submit, edit, and categorize their projects.
    • πŸ–ΌοΈ Rich Project Displays: Features to showcase projects with descriptions, screenshots, videos, and live demos.
    • πŸ‘₯ User Profiles & Authentication: Secure user accounts for contributors and administrators.
    • πŸ’¬ Commenting & Feedback System: Allow users to comment on projects and provide constructive feedback.
    • πŸ“Š Analytics & Reporting: Track project views, engagement, and other metrics.

Tip

The current setup is a robust starting point for any Bun + TypeScript application. Future features will build upon this solid foundation!

⬆️ Back to Top


πŸ—οΈ Architecture & Design

The weekly-project-showcase-sp-25 repository is designed with simplicity and extensibility in mind. Its current architecture is minimal, focusing on core runtime and language configuration.

High-Level Component Diagram

graph TD
    A[Developer/User] --> B(Bun Runtime);
    B --> C{Core Application Logic};
    C --> D[index.ts];
    C --> E[package.json];
    C --> F[tsconfig.json];

    subgraph Future Enhancements
        G(Web Frontend) --> B;
        C --> H(Database / Data Storage);
        C --> I(External APIs / Services);
    end

    style A fill:#f9f,stroke:#333,stroke-width:2px;
    style B fill:#bbf,stroke:#333,stroke-width:2px;
    style C fill:#ccf,stroke:#333,stroke-width:2px;
    style D fill:#ddf,stroke:#333,stroke-width:1px;
    style E fill:#ddf,stroke:#333,stroke-width:1px;
    style F fill:#ddf,stroke:#333,stroke-width:1px;
    style G fill:#fcf,stroke:#333,stroke-width:1px;
    style H fill:#fef,stroke:#333,stroke-width:1px;
    style I fill:#fef,stroke:#333,stroke-width:1px;
Loading

This diagram illustrates the current core components and how they interact within the Bun runtime, as well as potential future additions.

Component Responsibilities

  • Developer/User: Interacts with the application via CLI commands during development or as a user of a deployed service.
  • Bun Runtime: The execution environment for the TypeScript code. It handles parsing, compilation, and execution, and provides built-in utilities for package management.
  • Core Application Logic: Represents the main processing flow of the application. Currently, this is a simple "Hello World" log, but it's the heart where all future business logic will reside.
  • index.ts: The primary entry point and main source code file for the application. All core logic starts here.
  • package.json: Defines project metadata, scripts, and manages project dependencies and dev dependencies. It's crucial for project setup and running.
  • tsconfig.json: Configures the TypeScript compiler, specifying how TypeScript files are processed, what language features are enabled, and output options.
  • Future Enhancements (Placeholder):
    • Web Frontend: A potential separate client-side application (e.g., React, Vue, Svelte) that consumes services from this backend.
    • Database / Data Storage: For persisting project information, user data, etc.
    • External APIs / Services: Integration with third-party services for enhanced functionality.

Technology Stack

  • Runtime Environment:
    • Bun: A fast, all-in-one JavaScript runtime, bundler, and package manager.
  • Language:
    • TypeScript: A typed superset of JavaScript that compiles to plain JavaScript, offering enhanced tooling and maintainability.
  • Configuration:
    • package.json: For project metadata and dependency management.
    • tsconfig.json: For TypeScript compiler options.

⬆️ Back to Top


πŸš€ Getting Started

This section will guide you through setting up and running the weekly-project-showcase-sp-25 application on your local machine.

Prerequisites

Before you begin, ensure you have the following installed:

  • Bun: The JavaScript runtime.
    • Version Requirement: bun v1.1.42 or higher.
    • Installation: Follow the instructions on the Bun website.
      # Example for macOS/Linux via Homebrew:
      brew install oven-sh/bun/bun
      # Or via npm (requires Node.js):
      npm install -g bun
    • Verification:
      bun --version

Installation

Clone the repository and install the necessary dependencies using Bun:

  1. Clone the repository:

    git clone https://github.com/GDSC-FSC/weekly-project-showcase-sp-25.git
    cd weekly-project-showcase-sp-25
  2. Install dependencies:

    bun install

    [!NOTE] bun install is significantly faster than npm install or yarn install for most projects.

⬆️ Back to Top

Configuration

Expand for detailed configuration information

The project uses package.json for general project configuration and tsconfig.json for TypeScript-specific settings.

package.json

This file defines scripts, dependencies, and project metadata.

{
  "name": "weekly-project-showcase-sp-25",
  "module": "index.ts",
  "type": "module",
  "devDependencies": {
    "@types/bun": "latest"
  },
  "peerDependencies": {
    "typescript": "^5.0.0"
  }
}
  • name: The name of your project.
  • module: Specifies index.ts as the main entry point.
  • type: Set to "module" for ES module support.
  • devDependencies: Dependencies required only for development (e.g., @types/bun).
  • peerDependencies: Specifies compatible versions for typescript.

tsconfig.json

This file configures the TypeScript compiler. It ensures that your TypeScript code is compiled correctly and adheres to best practices.

{
  "compilerOptions": {
    "lib": ["ESNext", "DOM"],
    "target": "ESNext",
    "module": "ESNext",
    "moduleDetection": "force",
    "jsx": "react-jsx",
    "allowJs": true,
    "moduleResolution": "bundler",
    "allowImportingTsExtensions": true,
    "verbatimModuleSyntax": true,
    "noEmit": true,
    "strict": true,
    "skipLibCheck": true,
    "noFallthroughCasesInSwitch": true,
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "noPropertyAccessFromIndexSignature": false
  }
}
  • lib, target, module: Configure the target JavaScript version and module system.
  • strict: Enables a wide range of type-checking validation. Highly recommended for robust applications.
  • noEmit: Tells TypeScript not to emit JavaScript files, as Bun handles compilation directly.
  • moduleResolution: "bundler": Optimizes module resolution for bundlers like Bun.

Environment Variables (Future)

For future enhancements, you might need environment variables for API keys, database connection strings, etc. Bun supports .env files out of the box.

  • Create a .env file in the root directory:
    PORT=3000
    DATABASE_URL=postgres://user:password@host:port/database
    
  • Access them in your code:
    console.log(process.env.PORT);

⬆️ Back to Top

Running the Application

  1. Run in Development Mode: To run the application, simply execute the index.ts file using Bun:

    bun run index.ts

    You should see the output:

    Hello via Bun!
    
  2. Production Deployment (Future Considerations): For a production environment, you would typically build the application into a single JavaScript file and then run that compiled output. Bun handles this efficiently.

    • Build (if needed for a specific target/environment):
      # This project uses `noEmit: true` in tsconfig, so Bun compiles on the fly.
      # For a full build, you might use bun build or a dedicated bundler.
      # Example (conceptual for larger projects):
      # bun build ./index.ts --outdir ./dist --target bun --minify
    • Run Production:
      bun run ./dist/index.js # Assuming a build step creates a dist folder
      For this specific "Hello World" project, bun run index.ts directly executes it efficiently in any environment.

Important

Always ensure your Bun version meets the project's requirements for optimal compatibility and performance.

⬆️ Back to Top


πŸ“– Usage & Workflows

This section details how to interact with the current application and outlines typical workflows for future functionalities.

Basic Execution

The weekly-project-showcase-sp-25 project, in its current state, is a minimal Bun + TypeScript application. Its primary function is to demonstrate a working setup.

Scenario: Verifying Installation

  1. Open your terminal.
  2. Navigate to the project root directory:
    cd weekly-project-showcase-sp-25
  3. Run the application:
    bun run index.ts
  4. Observe the output:
    Hello via Bun!
    
    This confirms that Bun is correctly installed and configured, and the TypeScript file is being executed as expected.

Future Use Cases

As the project evolves into a full-fledged showcase platform, typical workflows will include:

Expand for anticipated future use cases

Workflow 1: Submitting a New Project (Hypothetical)

  1. User Authentication: A student logs into their account on the platform.
  2. Navigate to "Submit Project": The user clicks a button or link to initiate a new project submission.
  3. Fill out Project Details:
    • Project Title: "My Awesome Bun Application"
    • Description: A detailed explanation of the project's purpose, features, and technologies used.
    • Technologies: Tags like "Bun", "TypeScript", "React", "MongoDB".
    • GitHub Repository Link: https://github.com/username/my-awesome-app
    • Live Demo Link: https://my-awesome-app.vercel.app (if applicable)
    • Screenshots/Videos: Upload media files to showcase the project visually.
  4. Preview & Submit: The user reviews their submission and clicks "Submit."
  5. Confirmation: The platform displays a success message, and the project becomes visible (possibly after moderation).

Workflow 2: Viewing Projects (Hypothetical)

  1. Access the Platform: A user navigates to the showcase website.
  2. Browse Categories/Tags: Users can filter projects by technology, category (e.g., "Web Dev", "AI/ML", "Mobile"), or search by keywords.
  3. Select a Project: Click on a project card to view its detailed page.
  4. Engage with Project Details:
    • Read the full description.
    • View screenshots/videos.
    • Click on GitHub repo or live demo links.
    • Leave comments or feedback (if authenticated).

Workflow 3: Administering Projects (Hypothetical)

  1. Admin Login: An administrator logs into the platform's admin panel.
  2. Project Moderation:
    • Review pending project submissions.
    • Approve, reject, or request changes for projects.
    • Edit project details for consistency or corrections.
  3. User Management: Manage user accounts, roles, and permissions.
  4. Platform Settings: Configure showcase rules, categories, or announcements.

⬆️ Back to Top


🚧 Limitations, Known Issues & Future Roadmap

Current Limitations

As a starter project, weekly-project-showcase-sp-25 is intentionally minimal.

  • No Application Logic: Beyond a "Hello via Bun!" console log, there is no actual showcase functionality (e.g., project submission, database interaction, user interface).
  • CLI-only: Currently, it's a command-line application without a web server or user interface.
  • No Data Persistence: No database or file storage is integrated.
  • Basic Configuration: Limited to package.json and tsconfig.json. No advanced environment management.

Known Issues

Due to its simplicity, there are currently no known functional issues. If you encounter any unexpected behavior, please report it via the issue tracker.

Future Roadmap & Planned Enhancements

The following features and enhancements are planned for the weekly-project-showcase-sp-25 project to evolve into a comprehensive platform:

Expand for detailed roadmap

Phase 1: Core Functionality (Next Steps)

  • Database Integration:
    • Implement a database (e.g., PostgreSQL, MongoDB) for storing project data, user information.
    • Introduce an ORM/ODM (e.g., Prisma, Mongoose) for data interaction.
  • API Layer:
    • Develop RESTful or GraphQL APIs for project submission, retrieval, and management.
    • Implement basic authentication/authorization.
  • Basic Project Model: Define data structures for projects (title, description, links, technologies, etc.).

Phase 2: User Experience & Interaction

  • Web User Interface:
    • Develop a frontend application using a framework like React, Vue, or Svelte.
    • Create pages for project listing, detailed project views, and submission forms.
  • User Authentication System:
    • Implement robust user registration and login (e.g., JWT, OAuth).
    • Role-based access control (student, mentor, admin).
  • File Uploads:
    • Enable users to upload images, videos, or other media for their projects.

Phase 3: Advanced Features & Scalability

  • Search & Filtering:
    • Implement powerful search capabilities and advanced filtering options for projects.
  • Commenting & Feedback:
    • Allow users to post comments and provide feedback on submitted projects.
  • Notifications:
    • Implement real-time notifications for new comments, project approvals, etc.
  • Deployment Automation:
    • Set up CI/CD pipelines for automated testing, building, and deployment to cloud platforms (e.g., Vercel, Netlify, AWS, GCP).
  • Performance Optimization:
    • Caching, lazy loading, and other performance enhancements.

Feature Requests

We welcome feature requests and ideas from the community! Please open an issue on our GitHub repository with the label enhancement to suggest new features.

⬆️ Back to Top


🀝 Contributing & Development Guidelines

We welcome contributions from everyone! Whether it's reporting a bug, suggesting an enhancement, or submitting a pull request, your help is valuable.

How to Contribute

  1. Fork the Repository: Start by forking weekly-project-showcase-sp-25 to your GitHub account.
  2. Clone Your Fork:
    git clone https://github.com/YOUR_USERNAME/weekly-project-showcase-sp-25.git
    cd weekly-project-showcase-sp-25
  3. Create a New Branch:
    git checkout -b feature/your-feature-name-or-bugfix/issue-number
    Choose a descriptive name for your branch.
  4. Make Your Changes: Implement your feature or fix.
  5. Test Your Changes: Ensure your changes work as expected and don't introduce new issues. (Currently manual, but automated tests will be added later).
  6. Commit Your Changes: Write clear, concise commit messages.
    git commit -m "feat: Add user authentication module"
    Please follow Conventional Commits for commit messages.
  7. Push to Your Fork:
    git push origin feature/your-feature-name
  8. Open a Pull Request (PR):
    • Go to the original GDSC-FSC/weekly-project-showcase-sp-25 repository.
    • You should see a prompt to create a new Pull Request from your recently pushed branch.
    • Provide a clear title and detailed description of your changes.
    • Reference any related issues (e.g., Fixes #123, Closes #456).

Branching & Pull Request Guidelines

  • Main Branch: main is the primary development branch. All features and fixes should be merged into main after review.
  • Feature Branches: Create a new branch for each new feature or significant bug fix.
  • Code Review: All pull requests require at least one approving review before merging.
  • Meaningful Commits: Each commit should represent a single logical change.
  • Keep PRs Small: Focus on one feature or fix per pull request to make reviews easier.

Code Style & Linting

  • TypeScript Best Practices: Adhere to modern TypeScript practices, leveraging type safety.
  • tsconfig.json: Ensure your code compiles without errors based on the project's tsconfig.json.
  • Bun Formatter (Future): While not explicitly configured yet, Bun has a built-in formatter. You can use it as a manual step:
    bun fmt # Will format all files
    bun fmt --check # Will check if files are formatted
  • ESLint (Future): For more advanced linting and style checks, ESLint will be integrated.

Development Setup

  • Local Environment: Ensure you have Bun and TypeScript set up as described in Getting Started.
  • IDE: We recommend using Visual Studio Code with the following extensions:
    • ESLint (when integrated)
    • Prettier (when integrated)
    • TypeScript and JavaScript Language Features (built-in)
    • Mermaid Chart Previewer (for visualizing diagrams)

⬆️ Back to Top


πŸ“„ License, Credits & Contact

License

This project is licensed under the MIT License. You are free to use, modify, and distribute this software, provided the original copyright and license notice are included.

Acknowledgments

  • GDSC-FSC: For initiating and supporting this project.
  • Bun Team: For developing an incredible and fast JavaScript runtime that powers this project.
  • TypeScript Team: For providing a robust and type-safe development experience.

Maintainers & Contact

This project is currently maintained by the GDSC-FSC core team.

⬆️ Back to Top


πŸ“š Appendix

Changelog

Expand for recent updates

v0.1.0 - 2024-XX-XX (Initial Release)

  • Initial project setup using bun init.
  • Includes index.ts with a "Hello via Bun!" log.
  • Basic package.json and tsconfig.json configurations.
  • Comprehensive README documentation generated.

⬆️ Back to Top

FAQ (Frequently Asked Questions)

Expand for FAQs

Q1: What is Bun? A1: Bun is an incredibly fast all-in-one JavaScript runtime, bundler, transpiler, and package manager designed to be a drop-in replacement for Node.js, Webpack, Babel, and npm/Yarn. It's written in Zig and powered by Apple's WebKit JavaScriptCore engine.

Q2: Why use Bun instead of Node.js? A2: Bun offers significantly faster startup times, execution speeds, and dependency installation. It also includes built-in features like a module bundler, test runner, and TypeScript support, simplifying the development toolchain.

Q3: How do I add new dependencies to the project? A3: You can use Bun's built-in package manager, similar to npm or Yarn:

bun add <package-name>
bun add -D <dev-package-name> # For development dependencies

Q4: Can I use JavaScript instead of TypeScript? A4: While the project is configured for TypeScript (index.ts), Bun can execute plain JavaScript files (.js) directly. However, we strongly recommend using TypeScript for better code quality and maintainability in a collaborative project.

Q5: My Bun command isn't working, what should I do? A5:

  1. Check Bun installation: Run bun --version to ensure Bun is installed and in your PATH.
  2. Verify project dependencies: Run bun install to make sure all packages are correctly installed.
  3. Check command syntax: Double-check the command you're trying to run (e.g., bun run index.ts).

Q6: How can I contribute to the project? A6: Please refer to the Contributing & Development Guidelines section for detailed instructions. We welcome all contributions!

⬆️ Back to Top

Troubleshooting Guide

Expand for troubleshooting tips

Problem: bun command not found

  • Solution: Ensure Bun is correctly installed and its executable path is added to your system's PATH environment variable. Refer to the Bun installation guide. A common fix is to restart your terminal after installation.

Problem: bun install fails or encounters errors

  • Solution:
    1. Delete bun.lockb and node_modules: Sometimes, cached dependencies can cause issues.
      rm -rf bun.lockb node_modules
      bun install
    2. Check network connection: Ensure you have a stable internet connection to fetch packages.
    3. Check Bun version: Ensure your Bun version meets the project's prerequisites.
    4. Clear Bun cache:
      bun cache clean

Problem: bun run index.ts gives a TypeScript error

  • Solution:
    1. Check tsconfig.json: Ensure your tsconfig.json is correctly configured as provided in this repository.
    2. Lint your code: Look for syntax errors, missing types, or incorrect imports in your index.ts or other .ts files. Bun will transpile TypeScript on the fly, but it still expects valid TypeScript.
    3. Verify @types/bun: Ensure @types/bun is correctly installed in your devDependencies (check package.json and bun.lockb).

Problem: Application starts but doesn't do anything

  • Solution: In its current state, the application only prints "Hello via Bun!" to the console and then exits. If you see this output, the application is functioning as intended. Any future features would involve more complex outputs or server interactions.

Problem: Unable to clone repository due to permissions

  • Solution:
    1. Ensure you have read access to the repository.
    2. If you're contributing, you should first fork the repository to your own GitHub account and then clone your personal fork.

⬆️ Back to Top

Releases

No releases published

Packages

No packages published