A terminal-based dating application for developers, featuring ASCII art profiles, real-time chat, and collaborative coding challenges.
Terminally Dating is a unique social networking application that runs entirely in the terminal. Users can view ASCII art profiles, chat with matches, edit their profiles, and participate in collaborative coding challenges with their matches.
- Beautiful ASCII art profile pictures rendered in the terminal
- Customizable username fonts from a curated selection of pyfiglet fonts
- Personalized bios and GitHub links
- Soft retro Gruvbox color scheme for a comfortable viewing experience
- All profiles are retriwved from/ stored in a personal database
- Terminal-based chat interface with color-coded messages
- Message history stored in PostgreSQL database
- Intuitive left/right-aligned message display (user vs. partner)
- Type
/codeto initiate a coding challenge with your match - completely private, written from scratch and uses only our own proprietary database
- Random coding challenges fetched from the database
- Two-part challenges where each user writes complementary code
- Live code execution to test if both solutions work together
- Competitive element with countdown animations
- Success/failure feedback based on combined code execution
- Interactive profile editing with arrow key navigation
- Live font preview when selecting username fonts
- Edit username, bio, GitHub link, and profile picture
- Save changes directly to the database
terminally_dating/
βββ ascii_stuff/ # Main application code
β βββ main.py # Application entry point
β βββ UI.py # Profile display and editing
β βββ chat.py # Chat interface
β βββ image_to_ascii_art.py # ASCII art conversion
β βββ requirements.txt # Python dependencies
β βββ setup.sh # Setup script
βββ david_challenges/ # Coding challenge system
β βββ code_challenge.py # Challenge logic
β βββ challenge.sh # Challenge script runner
β βββ postgretest.py # Database testing
βββ isaacs_challenge_stuff/ # Challenge animations
β βββ animation.py # Countdown and challenge start
βββ bryan_data_for_ascii/ # Database utilities
β βββ help_me.py # User retrieval functions
βββ bryan_data/ # Additional database utilities
βββ lord_save_me.py # Message storage and retrieval
The application uses arrow keys for navigation:
When viewing your own profile:
βLeft Arrow: Open chat with matchesβUp Arrow: Edit your profileβRight Arrow: Explore other profilesq: Quit
When viewing other profiles:
βLeft Arrow: Return to your profileβUp Arrow: Chat with this personβRight Arrow: View next profileq: Quit
- Username: Rendered in large ASCII art using the user's chosen font
- Profile Picture: ASCII art conversion of the user's profile image (displayed on the right)
- Bio: User's biography displayed on the left half of the screen
- GitHub Link: User's GitHub profile URL (displayed on the right)
- Navigation Hints: ASCII art instructions at the bottom
The chat interface provides:
- Color-coded messages (user messages in green, partner messages in purple)
- Timestamps for each message
- Message history loaded from PostgreSQL database
- Real-time message updates
- Special
/codecommand to trigger coding challenges
When a user types /code in chat:
- A countdown animation starts (3 seconds by default)
- A random challenge is selected from the database
- The challenge has two parts - one for each user
- Each user writes their code independently
- Code is stored in the database
- Both code snippets are combined and executed together
- Success or failure is displayed based on execution results
Example challenge: One user writes a function, the other writes code that calls it.
The application uses PostgreSQL to store:
- User profiles: username, bio, GitHub link, profile picture path, name font
- Messages: sender, receiver, message text, timestamp
- Challenges: challenge descriptions and prompts
- Challenge answers: user submissions for challenges
- Python 3.7+
- PostgreSQL database
- Terminal with ANSI color support
- Clone the repository:
git clone <repository-url>
cd terminally_dating- Install Python dependencies:
cd ascii_stuff
pip install -r requirements.txtDependencies include:
pyfiglet- ASCII art text generationascii_magic- Image to ASCII art conversionpsycopg2-binary- PostgreSQL database adapterwebsocket-client- WebSocket support
-
Set up PostgreSQL database:
- Configure database connection in
david_challenges/code_challenge.py - Update host, database name, user, and password
- Create required tables (see database schema in code comments)
- Configure database connection in
-
Run the application:
python main.pyUpdate the database connection details in:
david_challenges/code_challenge.py(line 30-38)
conn = psycopg2.connect(
host="your_host",
database="your_database",
user="your_username",
password="your_password",
port=5432
)The application includes 25+ ASCII art fonts for username display:
- electronic, dos_rebel, def_leppard, sweet, bigmono9, lean
- georgi16, 3d-ascii, georgia11, banner3, new_asci, the_edge
- nscript, cybermedium, big_money-nw, starwars, pagga
- delta_corps_priest_1, rozzo, sub-zero, fraktur, nvscript
- and more!
The application uses a soft retro Gruvbox color palette:
- Background: Dark (#282828)
- Foreground: Warm beige (#D5C4A1)
- Accents: Subtle orange, aqua, blue, purple, yellow
- Highlights: Soft red, green for messages
This is a proof-of-concept application demonstrating:
- Terminal-based UI design
- ASCII art rendering
- Real-time messaging
- Collaborative coding challenges
- PostgreSQL integration
- Private, database creation and implementation,
- Using our personal database for profiles
- Using our own personal database system for messaging
- using our own database system for coop coding challenges