Play Chess Against the Machine March 2026 - Project Update
I am excited to share the latest updates on Play Chess Against the Machine March 2026. This project has grown a lot since I first started building it, and I am proud of the progress so far.
The idea for this chess teaching app came from watching people struggle to learn chess. I saw beginners get discouraged after losing to stronger players, give up because they did not understand why their moves were bad, and stop playing altogether because they felt there was no clear path to improvement.
I wanted to build something different. Not just a game where you play against an AI and that is it, but a teaching tool that helps you understand chess as you play. Something that shows you the right move before you make your move, explains strategies at your level, and encourages you to come back every day to get a little bit better.
I am Gesner Deslandes, Engineer in Chief at GlobalInternet.py. We are a software company based in Haiti that builds tailor-made solutions connecting the global market with our local expertise. We believe that education and technology can transform lives, and we wanted to create a product that reflects this mission.
What the Game Does
Play Chess Against The Machine is a web-based chess game where players challenge an AI opponent powered by Stockfish, the strongest open-source chess engine in the world. But this is not just another chess game. It is a teaching tool that helps you improve every time you play.
The AI Teaching Feature shows you the best move according to Stockfish before you make your move. This means you are constantly learning what the strongest move is in any position. You can choose to play that move or any other legal move, but you always know what the optimal move would have been.
The Difficulty Levels let the AI adapt to your skill level. Beginners can play at level 1, intermediate players at level 10, and advanced players at level 18. This keeps the game challenging but not frustrating.
The Winning Strategies Section gives each difficulty level three proven winning strategies. Beginners learn about Fool's Mate and Scholar's Mate. Intermediate players learn about the Fried Liver Attack and Queen's Gambit. Advanced players study the Sicilian Dragon and Ruy Lopez Marshall Attack. Players can read these strategies, study them, and then try to execute them in their games.
The Move History Tracking saves every move you make. You can download your complete move history after the game and review your performance. This is essential for learning from your mistakes.
The Multilingual Support allows the app to work in English, Spanish, French, and Haitian Creole. Players can switch languages instantly from the sidebar, and all text, instructions, and feedback will appear in their chosen language.
The Daily Retention Hooks encourage daily play by offering fresh learning experiences. Each day, players are challenged to try a new strategy, beat their previous win streak, or reach a new difficulty level. This creates a compelling reason to return day after day.
New Features Added
I added an AI female voice feature to the sidebar. When you click the button, the app describes itself in your chosen language. This helps new users understand what the app does and how to use it. The voice feature supports English, Spanish, French, and Haitian Creole.
I also added a custom text-to-speech feature. You can type any text into the sidebar, and the app will read it aloud in your chosen language. This is useful for learning pronunciation or just having fun with the app.
I updated the login page with a light blue theme. The login page now matches the app's clean professional look. The sidebar has also been updated with a light blue background for better readability.
I added the login password 20082010 to the app description. This makes it easy for new users to try the app without searching for the password.
I optimized the app for Arm-powered devices. This means the app runs faster and uses less battery on phones, tablets, and Arm-based computers.
How We Built It
I built the game using Python and Streamlit for the backend. The chess logic is handled by the python-chess library. The AI opponent is powered by Stockfish. The frontend uses Streamlit components with custom HTML and CSS for the chess board.
The chess board is rendered using chess.svg and displayed in the app using Streamlit's HTML component. The board updates in real time after each move.
The AI move is triggered automatically when it is the AI's turn. The app uses Streamlit's session state to track the game state and rerun the app after each move.
The multilingual support uses a dictionary-based translation system. Each language has a complete dictionary of all text strings used in the app. When the user selects a language, the app pulls the corresponding dictionary and renders all text in that language.
The AI voice feature uses gTTS (Google Text-to-Speech) to generate audio files from text. The audio is played directly in the app using Streamlit's audio component.
Optimization for Arm-Powered Devices
For the Arm AI Optimization Challenge, I optimized the chess app for Arm-powered devices in several ways. I optimized the Python runtime for Arm64 architecture. I reduced the app's memory footprint by loading only necessary resources. I improved the startup time by optimizing imports and initialization. I optimized the Stockfish engine for Arm by using Arm-specific compiler flags. I reduced battery consumption by minimizing background processes. I improved the responsiveness of the UI on touch devices.
Code Snippet - AI Move Handling
Here is a key code snippet that handles the AI move.
if not st.session_state.game_over and st.session_state.board.turn == chess.BLACK and not st.session_state.ai_thinking: st.session_state.ai_thinking = True with st.spinner("AI is calculating the best move..."): time.sleep(0.3) try: st.session_state.stockfish.set_fen_position(st.session_state.board.fen()) best_move_uci = st.session_state.stockfish.get_best_move() if best_move_uci: move = chess.Move.from_uci(best_move_uci) if move in st.session_state.board.legal_moves: move_san = st.session_state.board.san(move) st.session_state.board.push(move) st.session_state.move_history.append(move_san) st.session_state.last_move = move except Exception as e: st.error(f"AI error: {e}") st.session_state.ai_thinking = False st.rerun()
What I Learned
Building this game taught me several things. I learned how to integrate a chess engine into a web app. I learned how to handle chess notation correctly. I learned how to make AI moves seamless and automatic. I learned how to build a multilingual app with dictionary-based translations. I learned how to optimize for Arm-powered devices. I learned the importance of daily retention hooks in game design.
Challenges Faced
One of the biggest challenges was handling the chess notation correctly. The SAN representation of a move depends on the current board state. If you push the move to the board first, you lose the context needed to generate the SAN correctly. I solved this by generating the SAN string before pushing the move to the board.
Another challenge was making the AI move seamlessly. The AI needs to move automatically when it is its turn. I used Streamlit's rerun mechanism and session state flags to trigger the AI move and refresh the page.
Stockfish installation was also tricky. The app needs to find the Stockfish executable on the server. I implemented a fallback mechanism that tries multiple common paths.
Live Demo
You can play Play Chess Against the Machine right now at https://mqgnvqqcdgqh2texqbfxrr.streamlit.app/
Login password is 20082010.
Devpost Page
https://devpost.com/software/play-chess-against-the-machine-march-2026/
GitHub Repository
The source code will be available on GitHub under the MIT license.
Future Enhancements
I have big plans for the future. I plan to port the game to Devvit Web so it runs directly in Reddit feeds. I plan to rebuild the chess board using Phaser for smooth animations. I will implement a daily challenges system where players are given specific positions to solve. I will allow users to submit their own opening strategies and puzzles. I will add leaderboards so players can compete with others. I will create a dedicated subreddit for the game where players can discuss strategies and share their best games.
About the Creator
This project was built by me, Gesner Deslandes, Engineer in Chief at GlobalInternet.py. We are a software company based in Haiti that builds tailor-made solutions connecting the global market with our local expertise. We believe in using technology to educate and empower.
Contact
Phone: (509) 4738-5663 Email: deslandes78@gmail.com Website: https://globalinternetsitepy-abh7v6tnmskxxnuplrdcgk.streamlit.app/
We are proud to say: We are the best!
Thank You
Thank you for taking the time to read this update. I am excited to see where this project goes next. Every play, every vote, and every share bring us one step closer to making a real impact on chess education.
Please try the game, share it with others, and let me know what you think. Your feedback helps me improve and grow.

Log in or sign up for Devpost to join the conversation.