5 Things Done Over 12 Weeks: DOCSE

  1. FULL STACK
    • Developed fully-functional Rating and Review APIs for Project Frostbyte (critical features for reviewing national parks)
    • Implemented all CRUD features for dynamic creation, selection, and display of stars and reviews
    • Worked with Mr. Mortensen to debug review API in Tri 1 and applied learnings from then to new project
  2. DEPLOYMENT
    • Deployed frontend and backend sites to AWS server with integration to Github Pages
    • Created Python/Jinja MVC admin dashboard through AWS-deployed backend site
    • Wrote deployment blog for team and created deployment diagram
  3. AGILE METHODOLOGY
    • Organized team roles and responsibilities and tracked overall project execution through Kanban Board
    • Managed compatibility/applicability between teammates' features as Scrum Master
    • Encouraged continuous development and improvement through well-documented iteration plans
    • Managed creation of team project video
    • Organized N@TM presentation
    • Held several stand-up meetings for team collaboration and interaction
  4. COMPUTER SCIENCE SKILLS
    • Learned about AWS deployment, HTTP methods, and RESTful APIs
    • Understood OSI model (layers of a system)
    • Implemented security (!) into system through use of JWT tokens
  5. DESIGN SKILLS
    • Learned about elements of a webpage (header, body, embeds, scripts, and more) and webpage hierarchy
    • Experimented with layouts to find balance in site elements and create clean UIs
    • Implemented consistency across project

Evidence of Completion: Issues, Kanban Board, and Stand Up Meeting Notes

Star Issue Review Issue Kanban Board Stand Up Meeting Notes

Evidence of Understanding: Deployment Blog Diagram


Full Stack Project

Video Demo

CPT Requirements Met

Project Feature Blog Writeup

My feature allows a user to input their overall stars for a park and write detailed reviews that are visible to others. The system processes online data streams in the form of text and integer values in real time, efficiently managing reviews while ensuring they follow community guidelines through moderation by administrators.

Feature Overview

The system consists of two primary components:

  1. User Input & Submission
    • Users can input a star rating (1-5) and a written review via their device
    • The data is synced to the AWS-based backend server as an online data stream, where it's processed and stored in a SQLite database table for retrieval.
  2. Backend Processing & CRUD Operations
    • Create: When a user submits a review, it's collected in a list in the database.
    • Read: Reviews are dynamically retrieved and displayed on the national park’s page using sequencing algorithms and iteration
    • Update: Users can edit their past reviews if needed.
    • Delete: If a review violates guidelines, administrators can remove it.

This rating and review system enhances user engagement and decision-making for national park visitors. With a carefully structured algorithm, a well-organized procedure, and real-time online data streams, this feature ensures a smooth and exciting experience for all users.

# Sample of my code that includes storage in lists and shows sequencing/iteration

class _RATING(Resource):
        @token_required()
        def get(self):
            """Retrieve all ratings for a post."""
            data = request.get_json() # ========================= Retrieves ratings to store in frontend from list (SQL Database)

            if not data or 'channel_id' not in data:
                return {'message': 'Channel ID is required'}, 400

            ratings = Rating.query.filter_by(channel_id=data['channel_id']).all()
            if not ratings:
                return {'message': 'No ratings found for this channel'}, 404

            return jsonify({
                "ratings": [rating.read() for rating in ratings] # ========================= Iteration through ratings in table to determine rating
            })
// Sample of code that outputs visual data after using my algorithm

const userId = localStorage.getItem('uid');
const channelId = document.getElementById('channel_id').value; 

async function fetchAndFillOverallStars(channelId) {
    try {
        // Fetch overall rating from the endpoint
        const fetchingRatingData = {
                    user_id: userId,
                    channel_id: channelId
                };

        const response = await fetch(`${pythonURI}/api/rating`, { // ================== Calling my custom API endpoint
            ...fetchOptions,
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(fetchingRatingData)
        });

        if (!response.ok) {
            throw new Error('Failed to fetch overall rating: ' + response.statusText);
        }

        // Parse the response to get the star rating
        const { stars } = await response.json();

        // Find the existing stars for overall rating and fill them
        document.querySelectorAll('.star[data-rating-type="overall"]').forEach((star, index) => {
            star.style.color = (index < stars) ? '#ff0' : '#bbb'; // ==================================== Fills stars yellow based on fetched rating (User-friendly data output)
        });

    } catch (error) {
        console.error('Error fetching overall stars:', error);
    }
}

Project Strengths and Weaknesses

  1. Strengths
    • Consists of many unique elements for different users (camping posts, ratings and reviews, personality quiz, Gemini, Google Maps integration)
    • Scalable because of various database tables
    • Ability to be moderated by administrators through backend admin dashboard (preserves culture of site)
  2. Weaknesses
    • Suboptimal UX (navigation and flow can be unclear to novice users)
    • Default login page (can be personalized for theme)
    • Lacking audit log for deleted posts and ratings (could improve cybersecurity if saved)

Next Steps For My Project

  • Modify frontend layout to promote more synchronized UX
  • Reduce redundancy between features (especially rating and review - modify stars to reflect current social media standards and UX)
  • Add additional features (calendar to show peak visitation times, reservations for parking/lodging, etc.)

Night at the Museum: Tri 2

Review with Ms. Pataki and Others

  • Before N@TM, my group reviewed our presentation with Ms. Pataki. She provided valuable feedback regarding user interface customization, ease of UX, and demo content (she emphasized a lessened transition time between various speakers in our group while presenting). We incorporated her feedback into our presentation by cleaning up the frontend before the review in the evening. We also practiced our presentation further to ensure connection and clarity between speakers.

Our N@TM Experience

  • Presenting at N@TM allowed us to practice discussing our project in a concise manner in preparation for AP video creation. We shared our project with many classmates and parents, who provided us with valuable feedback.

This feedback, particularly comments regarding styling and improvements to UI, has been the main focus of our improvements to the project.

N@TM Interests and Reviews

I reviewed 7 different presentations at N@TM this trimester. Some of the key ones that stood out to me were the following:

  1. Holiday Giftinator
    • Vibha's group's project was delightfully festive and exciting; it was a creative way to develop a social-media site that is relevant to everyday consumers. This group's UX organization was particularly engaging, as it encouraged users to log in before using site features. It also guided users through the gift selection process, with evident frontend-backend connection.
  2. Prism
    • Mihir's group's project was also innovative, with unique styling and a modified login page. The use of personalization from the start of the user's experience was creative and a feature most real-world websites use. I also liked their review page; having reviews for the actual project stored on the backend database was a fun way to increase N@TM engagement.
  3. CSA Gradebook Creation Project
    • When learning about Aadit and Eric's project to create a "pseudo-Synergy" for students and teachers to access CS grading data through, I was amazed by the creativity and applicability of the project to all DNHS CS students. The organization of the backend code was clear and I was inspired by the quality of their work, furthering my motivation to take CSA next year.
  4. CSA Live Review Organization Project
    • I also reviewed Ian's "Live Review Timer" project. I observed him using it in class to track classmates' progress in live reviews and it looks like a project that can be implemented in DNHS CS classes for many years to come. I am inspired to create a similar, long-lasting project that has increased real-world significance, especially as I start developing programs for specific clientele to solve problems (ex. GS).

Giftinator Prism Grades

MCQ Reflection

Click here!


Retrospective

Future Interests in Computer Science

In the future, I am looking towards the following options in career pathways:

  • Interest: Cybersecurity: I am passionate about cybersecurity and compete in CyberPatriot yearly. I excel in this interest and plan to continue learning more about it.
  • Classes: I am planning on taking Computer Science A next year and am looking forward to learning about Java!
  • College and Career: I would like to major in a field that merges both biology and computer science, such as computational biology. The fusion of tech and biology, especially as machine learning and data modeling becomes increasingly relevant in other science fields, is fascinating to me.

Personal Strengths and Weaknesses Review

At the beginning of this trimester, I was used to working in a smaller group with a team members who were very similar to me in terms of work habits and deadline time management. When working in larger groups this trimester, I was exposed to new, innovative methods of completing tasks. These ideas, such as designs for frontend pages, backend organization, and even blog creation and group role dynamics, were different from my own methods; I learned from my team members and was able to improve my own understanding of team projects. Additionally, I learned how to work with different work styles and how to encourage teammates to work towards a common final objective.

  1. Glows
    • Technical understanding of full stack and deployment
    • Ability to debug complex programs
    • Organization and planning (see Kanban board and burndown issues)
  2. Grows
    • Adapting to different styles of working
    • Working across other teams (outside of my own)
    • Continue improving my understanding of technical content

Self Assessment

Skill Points Score Justification
5 Things Done Over 12 Weeks 5 5 Completed, in-depth with evidence of progress and completion
Full Stack Demo 2 1.9 Rating and Review features work on deployed site with all 4 CRUD functions. Styling and cohesiveness with other features can be improved
Project Feature Blog Write Up 1 1 Uses FRQ and CPT language, descriptive and explains all elements of project Rating and Review features
MCQ 1 0.8 Each question missed is explained in-depth with explicit understanding of what I got wrong. Overall score was not satisfactory.
Reflection in Retrospective 1 0.8 Answered every one of the extra-point prompts, with information woven in to other parts of my presentation for cohesiveness.
Total 10 9.5 Overall, I think my work in CSP this trimester merits an A for effort and successful completion of projects as explained in this retrospective.

Total: 9.5/10