馃帀 v1.0.0 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
.gitignorefile to exclude irrelevant files (e.g., logs,node_modules, build outputs, IDE files) while preserving thepublic/BCFCODE LOGO.jpgasset for branding consistency. This ensures a clean and professional repository. - Created a detailed
README.mdwith setup instructions, project overview, contribution guidelines, and links to BCFCODE's social channels (Telegram, X), making it accessible for new contributors. - Defined a
package.jsonwith 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.
- Added a comprehensive
-
Structured JavaScript Training Environment:
- Established
html/index.htmlas the entry point for the Vanilla JS Training project, optimized withdeferscript loading and updated to support ES modules (type="module") for modern JavaScript development. - Introduced
js/index.jsas the main JavaScript entry point, referenced inindex.htmlfor modular code execution.
- Established
-
Data Structures and Algorithms Learning Path:
- Added a
js/DataStructuredirectory with educational implementations and exercises:- Classes: Implemented a
Cookieclass with getter/setter methods to teach object-oriented programming, supported by Vitest test cases for validation. - Doubly Linked List: Developed a comprehensive
DoublyLinkedListclass 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.jsfiles.
- Classes: Implemented a
- Included an Anki deck (
Data Structures & Algorithms.apkg) to support spaced repetition learning, enhancing the project's educational value.
- Added a
-
Testing Framework with Vitest:
- Integrated Vitest (
^3.0.4) as the testing framework, configured with avitest.config.jsfor verbose reporting. - Added testing utilities in
js/utils:J.js: JSON stringification for consistent test output.checkDLLInternalStructure.jsandcheckLLInternalStructure.js: Validate linked list structures.executeTestCases.js: Streamlines test execution.getNestedProperty.js: Safely accesses nested object properties.index.js: Exports utilities for easy access.
- Integrated Vitest (
-
Dependency Management:
- Adopted
pnpmas the package manager, with apnpm-lock.yamlensuring deterministic dependency installation for Vitest and its dependencies.
- Adopted
Improvements
-
Optimized HTML Structure:
- Updated
index.htmlto use ES modules (<script type="module">) for better module management and alignment with modern standards. - Positioned the script tag with
deferat the end of<body>to enhance page load performance.
- Updated
-
Robust Testing Setup:
- Organized
DoublyLinkedListtests into descriptivedescribeblocks, covering empty lists, single-node cases, and multi-node scenarios with clearexpectassertions. - Utilized Vitest's dynamic test generation and
beforeEachto improve test coverage and reduce redundancy.
- Organized
-
Enhanced Documentation:
- The
README.mdincludes 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.
- The
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:
-
Clone the Repository:
git clone https://github.com/BCFCODE/JST
-
Install Dependencies:
pnpm install
-
Run Tests:
npx test -
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.