Skip to content

馃帀 v1.0.0 Release

Choose a tag to compare

@BCFCODE BCFCODE released this 10 May 11:46
· 406 commits to main since this release

JST (JS Training) v1.0.0 Release

Welcome to the first official release of JST (JS Training), a meticulously crafted project designed to help developers master JavaScript fundamentals and adopt industry-standard best practices. This initial release establishes a robust foundation for learning, featuring a well-organized project structure, modern JavaScript techniques, and comprehensive testing setups. Whether you're new to coding or refining your skills, JST provides an ideal environment to grow as a JavaScript developer.


What's New in v1.0.0

This release introduces the core components of JST, setting the stage for an educational and scalable JavaScript training platform. Below is a detailed overview of the features, improvements, and additions included in this version.

New Features

  • Project Setup with Best Practices:

    • Added a comprehensive .gitignore file to exclude irrelevant files (e.g., logs, node_modules, build outputs, IDE files) while preserving the public/BCFCODE LOGO.jpg asset for branding consistency. This ensures a clean and professional repository.
    • Created a detailed README.md with setup instructions, project overview, contribution guidelines, and links to BCFCODE's social channels (Telegram, X), making it accessible for new contributors.
    • Defined a package.json with metadata, scripts for testing (vitest), starting the project, and a placeholder for future builds. The project is licensed under MIT and linked to its GitHub repository.
  • Structured JavaScript Training Environment:

    • Established html/index.html as the entry point for the Vanilla JS Training project, optimized with defer script loading and updated to support ES modules (type="module") for modern JavaScript development.
    • Introduced js/index.js as the main JavaScript entry point, referenced in index.html for modular code execution.
  • Data Structures and Algorithms Learning Path:

    • Added a js/DataStructure directory with educational implementations and exercises:
      • Classes: Implemented a Cookie class with getter/setter methods to teach object-oriented programming, supported by Vitest test cases for validation.
      • Doubly Linked List: Developed a comprehensive DoublyLinkedList class with methods for:
        • constructor: Initializes a list with a single node.
        • push: Appends a node to the end.
        • pop: Removes and returns the last node.
        • unshift: Prepends a node to the beginning.
        • shift: Removes and returns the first node.
        • get: Retrieves a node at a specified index with optimized traversal.
        • set: Updates a node's value at a given index.
      • Each method is rigorously tested with Vitest, covering edge cases (e.g., empty lists, invalid indices) and expected outputs, with tests organized in *.test.js files.
    • Included an Anki deck (Data Structures & Algorithms.apkg) to support spaced repetition learning, enhancing the project's educational value.
  • Testing Framework with Vitest:

    • Integrated Vitest (^3.0.4) as the testing framework, configured with a vitest.config.js for verbose reporting.
    • Added testing utilities in js/utils:
      • J.js: JSON stringification for consistent test output.
      • checkDLLInternalStructure.js and checkLLInternalStructure.js: Validate linked list structures.
      • executeTestCases.js: Streamlines test execution.
      • getNestedProperty.js: Safely accesses nested object properties.
      • index.js: Exports utilities for easy access.
  • Dependency Management:

    • Adopted pnpm as the package manager, with a pnpm-lock.yaml ensuring deterministic dependency installation for Vitest and its dependencies.

Improvements

  • Optimized HTML Structure:

    • Updated index.html to use ES modules (<script type="module">) for better module management and alignment with modern standards.
    • Positioned the script tag with defer at the end of <body> to enhance page load performance.
  • Robust Testing Setup:

    • Organized DoublyLinkedList tests into descriptive describe blocks, covering empty lists, single-node cases, and multi-node scenarios with clear expect assertions.
    • Utilized Vitest's dynamic test generation and beforeEach to improve test coverage and reduce redundancy.
  • Enhanced Documentation:

    • The README.md includes a Getting Started section with prerequisites (Node.js v16+, Git), installation steps, and testing instructions, lowering the entry barrier.
    • Added a Contributing section to encourage community involvement, with guidance on opening issues and pull requests.

Bug Fixes

  • As this is the initial release, no bug fixes are included. Future releases will address any reported issues.

Dependencies Added

  • Vitest (^3.0.4): A fast, modern testing framework for unit testing data structure implementations.
  • pnpm: Package manager for efficient and reproducible dependency management.

Getting Started

To explore JST v1.0.0, follow these steps:

  1. Clone the Repository:

    git clone https://github.com/BCFCODE/JST
  2. Install Dependencies:

    pnpm install
  3. Run Tests:

    npx test
  4. Start the Project:

    pnpm start

For detailed instructions, refer to the README.md.


Contributing

We warmly invite you to contribute to JST and join the BCFCODE community! Whether you want to add new data structures, enhance tests, or fix bugs, your contributions are valued. Please review the Contributing Guidelines in the README and submit _submit an issue or pull request to get started.


Acknowledgments

  • Author: Special thanks to Morteza Bakhshandeh for developing JST with dedication and vision.
  • BCFCODE Team: Gratitude for inspiring and supporting this project. Connect with us on X or join our Telegram for updates.
  • Community: We look forward to your feedback and contributions to make JST a leading resource for JavaScript learning.

Feedback

Have questions or suggestions? Please open an issue on GitHub or reach out via Telegram. Your input will help shape the future of JST.


Thank you for choosing JST! Let's code, learn, and grow together.

漏 BCFCODE | View on GitHub