A comprehensive command-line streaming platform simulation built in C, featuring complete user management, content tracking, viewing analytics, and persistent data storage through CSV files.
Academic Project | Developed as part of Computer Engineering studies to demonstrate proficiency in systems programming, modular design patterns, and data structure implementation in C.
- Complete CRUD operations for movies and TV shows
- Dynamic content catalog with metadata support
- Genre categorization and content filtering
- Efficient search and listing capabilities
- Secure user registration and authentication
- Personal viewing history tracking
- User preference management
- Session management system
- Real-time viewing statistics
- Most-watched content analysis
- User engagement metrics
- Personalized viewing recommendations
- Detailed activity reports
- CSV-based data storage system
- Automatic file generation and management
- Data integrity validation
- Cross-session data persistence
The project follows a clean, modular architecture with separation of concerns:
π Project Structure
βββ π main.c # Application entry point and main loop
βββ π csvutil.c/.h # CSV file I/O operations
βββ π content.c/.h # Content management logic
βββ π user.c/.h # User authentication and management
βββ π list.c/.h # Dynamic data structure implementations
βββ π recommendation.c/.h # Content recommendation algorithms
βββ π report.c/.h # Analytics and reporting system
βββ π test.c # Unit testing framework
βββ π data/ # CSV data files
βββ π Makefile # Build automation
- Language: C (C99 standard)
- Compiler: GCC with strict warning flags
- Build System: Make
- Data Format: CSV for persistence
- Memory Management: Manual allocation/deallocation
- Data Structures: Dynamic arrays, linked lists
# Required tools
- GCC compiler (v4.9+)
- Make build system
- Terminal/Command line interface# Clone the repository
git clone https://github.com/MJ-Sarabando/playingwith_C_streaming.git
cd playingwith_C_streaming
# Build the application
make
# Run the streaming platform
./streamflix
# Run test suite (optional)
make testThe application automatically manages these CSV files:
π data/contents.csv- Movie and TV show catalogπ data/users.csv- User accounts and credentialsπ data/viewing_history.csv- User viewing records and timestamps
- Unit tests for all core modules
- Data validation testing
- File I/O error handling
- Memory leak detection
# Run comprehensive test suite
make test
# Clean build artifacts
make clean- Strict compiler warnings (
-Wall -Wextra -pedantic) - C99 standard compliance
- Consistent coding style
- Comprehensive error handling
- Dynamic Memory Management: Efficient allocation and deallocation patterns
- File I/O Operations: Robust CSV parsing and writing with error handling
- Data Structures: Implementation of dynamic arrays and linked structures
- Modular Programming: Clean separation of concerns across multiple modules
- Function Pointers: Used for flexible callback implementations
- String Manipulation: Advanced string processing for data parsing
- Model-View-Controller: Separation of data, logic, and presentation
- Factory Pattern: Dynamic object creation for content and users
- Observer Pattern: Event-driven updates for viewing history
- Strategy Pattern: Flexible recommendation algorithms
This project demonstrates proficiency in:
- β Systems Programming: Low-level memory management and file operations
- β Software Architecture: Modular design and code organization
- β Data Structures: Implementation and manipulation of complex data types
- β Algorithm Design: Search, sort, and recommendation algorithms
- β File Systems: CSV parsing, validation, and persistence
- β Testing: Unit testing and quality assurance practices
- β Build Systems: Makefile creation and dependency management
The project uses a sophisticated Makefile with multiple targets:
# Production build
make # Compile main application
# Development tools
make test # Build and run test suite
make clean # Remove build artifacts
# Compiler flags ensure code quality
CFLAGS = -Wall -Wextra -pedantic -std=c99Potential extensions to demonstrate additional skills:
- π Enhanced Security: User password hashing and session tokens
- π Network Support: TCP/IP client-server architecture
- ποΈ Database Integration: SQLite or MySQL backend
- π¨ GUI Interface: GTK+ or ncurses-based interface
- β‘ Performance: Multi-threading for concurrent users
- π± API Development: RESTful API for mobile client support
This project showcases my passion for systems programming and demonstrates my ability to build complete, production-quality applications in C. It reflects my understanding of:
- Computer Science fundamentals
- Software engineering best practices
- System-level programming concepts
- Professional development workflows
I'm always interested in discussing C programming, systems development, and software engineering:
This project is open source and available under the MIT License.
Built with β€οΈ and lots of C programming
β If you find this project interesting, please consider giving it a star! β