About the Project Inspiration
The inspiration for this project came from the need to simplify task management for students. As a student myself, I often found it challenging to keep track of deadlines for assignments, exams, and other tasks across multiple courses. Traditional to-do list apps didn’t quite fit my needs because they lacked the ability to automatically extract deadlines from course syllabi. This project was born out of the desire to create a tool that could seamlessly integrate with a student’s workflow, making it easier to stay organized and on top of academic responsibilities.
What I Learned
Throughout the development of this project, I gained valuable experience in several areas:
Streamlit: I learned how to build interactive web applications using Streamlit, including how to manage session states and navigate between pages. Database Management: I gained hands-on experience with SQLite, including creating tables, inserting data, and querying the database. Error Handling: I learned how to handle errors gracefully, such as when a user uploads a PDF without any extractable deadlines. User Interface Design: I improved my skills in designing user-friendly interfaces, including the use of tabs, buttons, and forms. How I Built the Project
The project was built using the following technologies and steps:
Streamlit: Used to create the web interface, including the login, signup, main, summary, and data extraction pages. SQLite: Used to store user credentials and task data. PyPDF2: Used to extract text from uploaded PDF files. Regex and spaCy: Used to identify and extract deadlines and other relevant information from the text. Pandas and Plotly: Used to display task data in tables and charts. The development process involved:
Designing the user interface and navigation flow. Implementing user authentication and session management. Writing functions to extract and process data from PDFs. Integrating the database to store and retrieve user and task data. Testing and refining the application to ensure a smooth user experience. Challenges Faced
Several challenges were encountered during the development of this project:
PDF Text Extraction: Extracting text from PDFs can be tricky due to variations in formatting. I had to experiment with different libraries and techniques to ensure accurate extraction. Deadline Extraction: Identifying and parsing dates from unstructured text required careful use of regex and NLP techniques. Handling relative dates (e.g., "due one week after the lecture") was particularly challenging. Session Management: Managing session states in Streamlit to ensure seamless navigation between pages and maintaining the logged-in state required careful planning. Database Integration: Ensuring that the database schema was correctly designed and that all queries worked as expected took several iterations. User Interface Design: Balancing functionality with a clean and intuitive user interface was a constant challenge, especially when dealing with multiple tabs and buttons. Conclusion
This project was a rewarding experience that allowed me to apply my programming skills to solve a real-world problem. It not only helped me improve my technical abilities but also gave me a deeper appreciation for the challenges involved in building user-friendly applications. I hope this tool will be useful for students like myself, helping them stay organized and focused on their academic goals.
Log in or sign up for Devpost to join the conversation.