
A mobile application designed to help users bridge the gap between their academic knowledge and professional career by providing journaling, interview preparation, and AI-powered assistance.
View Demo
·
Report Bug
·
Request Feature
Table of Contents
Bridge It is a comprehensive career development tool designed to help students and professionals transition smoothly from academic to professional environments. The application offers several key features:
- Personal Journal: Document your career journey, insights, and growth
- Interview Preparation: Practice and prepare for job interviews with guided exercises
- AI Assistant (Bridget): Get personalized career advice and feedback
- Progress Tracking: Monitor your development and set career goals
- Resource Library: Access curated resources for professional development
This project uses a component-based structure with a focus on clear separation of concerns. Key files and folders:
.
├── app # Main application directory (Expo Router)
│ ├── index.tsx # Home/Dashboard screen
│ ├── interview.tsx # Interview preparation screen
│ ├── screens # Additional screens directory
│ │ ├── EntryDetail.tsx # Detailed view of a journal entry
│ │ ├── allEntry.tsx # List view of all journal entries
│ │ ├── chatBot.tsx # Conversational interface with Bridget AI
│ │ ├── textEntry.tsx # Text-based journal entry modal
│ │ └── voiceEntry.tsx # Voice-based journal entry modal
│ └── signin # Authentication screens
├── assets # Static assets (images, fonts)
├── backend # Backend services and API
│ ├── dbFunctions.ts # Firebase database operations
│ ├── firebaseInit.ts # Firebase initialization
│ ├── gemini.ts # Google Gemini AI integration
│ └── utils.ts # Utility functions for backend
├── components # Reusable UI components
├── context # React Context providers
│ └── UserContext.tsx # User authentication and profile context
└── types # TypeScript type definitions
└── journal.ts # Types for journal entries
The main components and utilities are organized under app/
, components/
, and backend/
.
To get a local copy up and running follow these simple example steps.
This is an example of how to list things you need to use the software and how to install them.
npm install npm@latest -g
-
Clone the repo
git clone https://github.com/394-w25/bridge-it.git
-
Install NPM packages
npm install
-
Create a Firebase project and set up Authentication and Firestore. More information below.
-
Copy
.env.example
file and rename it to.env
file in the root directory. -
Enter your Firebase and Gemini API credentials:
EXPO_PUBLIC_FIREBASE_API_KEY= EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN= EXPO_PUBLIC_FIREBASE_PROJECT_ID= EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET= EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID= EXPO_PUBLIC_FIREBASE_APP_ID= EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID= EXPO_PUBLIC_GEMINI_API_KEY=
-
Change git remote url to avoid accidental pushes to base project
git remote set-url origin github_username/repo_name git remote -v # confirm the changes
- Visit Google's AI Studio and create an account
- Generate an API key for the Gemini API
- Add this key to your
.env
file asEXPO_PUBLIC_GEMINI_API_KEY
- Create a Firebase account at https://firebase.google.com/
- Create a new project in the Firebase console
- Enable Authentication with Email/Password sign-in method
- Create a Firestore database with the following collections:
users
: To store user profile informationjournals
: To store user journal entriesinterviews
: To store interview preparation data
- In the Firebase console, go to Project Settings > General
- Scroll down to "Your apps" section and click the web app icon (</>) to register a web app
- Copy the configuration object provided
- Use these values in your .env file as described in the Installation section
displayName
: User's display nameemail
: User's email addressblurb
: AI-generated summary of the user's skills and experiences
title
: Entry titlecontent
: Main content of the journal entrysummary
: Bullet-point summary of the entryhardSkills
: Technical skills demonstrated in the entrysoftSkills
: Soft skills demonstrated in the entryreflection
: Reflection for interview preparationcategories
: Classification of the entry (Academic, Personal, Leadership, Research, Project)shortSummary
: Concise one-line summary of the entrytimestamp
: Date and time when the entry was created
companyInfo
: Key facts about the companyinterviewQ
: AI-generated interview questions based on the job postingjobPosting
: URL or content of the job postingkeyStrength
: User strengths that align with the job requirementspositionName
: Title of the job position
-
Why: Avoid developing directly on
main
. Keepingmain
in sync withorigin/main
makes it easier to update and manage changes. -
How: Create and switch to a new branch for your feature, and remember to push it to
origin
:git switch -c feat/new-feature-name git push -u origin feat/new-feature-name
-
Switch Back to
main
: Ensure you're onmain
before updating:git switch main
-
Stash Your Work(if needed): If you have uncommitted changes, stash them to avoid conflicts while pulling:
git stash
-
Pull Latest Changes: Bring in the latest updates from
origin/main
:git pull origin main
-
Switch Back to Your Feature Branch:
git switch feat/new-feature-name
-
Rebase: Apply your feature branch changes on top of the latest
main
:git rebase main
-
Apply Stash(if you stashed changes): Reapply your saved changes once main is updated:
git stash pop
-
Resolve Conflicts (if any): If conflicts occur, Git will prompt you to resolve them. After resolving, use:
git add <conflicted-files> git rebase --continue
-
Push Changes:
-
If you have NOT previously pushed code to the remote:
git push
-
If you HAVE previously pushed code (with conflicting changes), you may need to force-push to align with the rebased history. (Do NOT use this on
main
)git push --force-with-lease
-
By following these steps, you ensure that main
remains in sync with origin/main
, while your feature branch incorporates the latest updates without directly modifying main
. This keeps your work organized and minimizes conflict risks.
Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.
Bridge It offers several key features to help users develop their professional skills:
The Dashboard is the central hub of Bridge It, providing a comprehensive overview of your professional journey and development. To access the Dashboard, simply open the app and log in. The Dashboard is the default landing page, providing immediate access to your professional development journey.
Here's how to make the most of its features:
The Dashboard displays your AI-generated professional blurb, which summarizes your skills, experiences, and career aspirations based on your journal entries.
- View Your Blurb: Your personalized professional summary appears at the top of the Dashboard
- Update Your Blurb: The blurb automatically updates as you add more journal entries
- Use for Networking: Copy your blurb for LinkedIn profiles, personal websites, or networking events
Track your professional development through intuitive skills visualization:
- Skills Overview: See a breakdown of your hard and soft skills extracted from journal entries
- Skills Growth: Monitor how your skills develop over time with progress indicators
- Skill Categories: View skills organized by categories (Technical, Communication, Leadership, etc.)
- Skill Recommendations: Receive suggestions for skills to develop based on your career interests
Stay informed about career development opportunities:
- Event Calendar: View upcoming career fairs, workshops, and networking events
- Event Link: Quick access to an external event link
- Card Dismissal: Dismiss the event card if you're not interested
Record your daily professional experiences, challenges, and insights. The journal feature helps you track your growth and identify patterns in your career development.
- Navigate to the Journal tab
- Tap the "+" button to create a new entry
- Write about your experience
- The AI will automatically analyze your entry to extract skills and provide a summary
- View all of your saved and analyzed entries in the All Entries tab
Practice common interview questions, receive feedback on your responses, and improve your interview skills with guided exercises tailored to your industry.
- Navigate to the Interview Prep tab
- Enter a job posting URL and position name
- The app will analyze the job posting and your journal entries
- Review company information, your key strengths, and practice interview questions
Get personalized career advice, resume feedback, and professional development suggestions from our AI assistant, Bridget.
- Navigate to the Bridget tab
- Start a conversation with the AI
- Ask questions about career development, interview tips, or job search strategies
For more examples, please refer to the demo
- User authentication and profile management
- Personal journal with AI-powered analysis
- Skills extraction and categorization from journal entries
- AI-generated professional blurb based on journal content
- Interview preparation with job posting analysis
- Conversational AI assistant (Bridget) for career guidance
- Dashboard with skills visualization
- Display category circles in All Entries shelf
- Implement speech-to-text functionality
- Implement file upload functionality
- Implement camera upload functionality
- Make the radar chart take in dynamic data from Gemini
- Gamification system upgrade
- Streak counter for consistent journaling
- Points system for completing prep through Bridget AI
See the open issues for a full list of proposed features (and known issues).
- The Gemini API occasionally experiences slow response times during peak usage periods, which can delay the analysis of journal entries and interview preparation.
- The Gemini API occasionally exhausts all resources on the free dev plan. We've been working around this by changing the model.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE.txt
for more information.
Project Link: https://github.com/394-w25/bridge-it
- This project was created by Team Orange in Northwestern University's CS394 course, taught by Prof. C. Riesbeck
- Thanks to our product managers in the Northwestern University MPD^2 course for their guidance